gpt4 book ai didi

java.nio.file: Path 接口(interface)实际实现在哪里?

转载 作者:太空狗 更新时间:2023-10-29 22:47:31 27 4
gpt4 key购买 nike

最近我正在使用 Java 7 中引入的 java.nio.file 包进行一些编码,并看到一个使用 Path 的示例,如下所示:

Path path = Paths.get("C:\\Users");

鉴于 Path 是一个接口(interface),我对如何引用它感到困惑,但是经过一些研究后我发现允许引用一个接口(interface),但它必须指向一个实现该接口(interface)的类。从这里看,我查看了 Paths 类,发现它没有实现 Path。查看源码实际方法Paths.get方法如下:

public static Path get(String first, String... more) {
return FileSystems.getDefault().getPath(first, more);
}

该方法首先使用我认为称为静态工厂方法的方法返回一个 FileSystem 类型的对象(我认为来自抽象类),但 FileSystem 也没有实现该接口(interface)。

我的问题是是否有人知道/能够解释 Path 接口(interface)的实际实现位置,因为我似乎无法找到它发生的位置。

最佳答案

如果仔细观察,您会注意到 FileSystem 对象的 getPath 方法返回 Path 接口(interface)的实现。通过调用 FileSystems.getDefault(),您将检索依赖于系统的 FileSystem 接口(interface)的实现。在 Linux 系统上,您将获得扩展 UnixFileSystem 类的 LinuxFileSystem 对象。

例如,您可以查看来自 openjdk 的 UnixFileSystem 类,它是 FileSystem 接口(interface)的实现。

这是来自 UnixFileSystemgetPath 方法实现的链接,这将返回 UnixPath 的实例.

您必须记住,FileSystems.getDefault 返回依赖于操作系统的实现。此外,这些类的源代码在 oracle jdk 中不可用。

关于java.nio.file: Path 接口(interface)实际实现在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20836121/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com