java.nio.file:Path接口实际在哪里实现?
最近我使用Java 7中引入的java.nio.file包进行了一些编码,并看到了一个使用Path的示例:
Path path = Paths.get("C:\\Users");
鉴于Path是一个接口,我对如何引用它感到困惑,但经过一些研究后我发现允许对接口的引用,但它必须指向实现接口的类。 从这看起来我查看了Paths类,发现它没有实现Path。 查看源代码的实际方法Paths.get方法如下:
public static Path get(String first, String... more) { return FileSystems.getDefault().getPath(first, more); }
该方法首先使用我认为称为静态工厂方法的方法返回FileSystem类型的对象(我认为是抽象类),但FileSystem也没有实现该接口。
我的问题是有没有人知道/能够解释Path接口实际实现的位置,因为我似乎无法找到它发生的位置。
如果仔细观察,您会注意到FileSystem
对象的getPath
方法返回Path接口的实现。 通过调用FileSystems.getDefault()
您将检索FileSystem
接口的实现,这取决于系统。 在Linux系统上,您将获得LinuxFileSystem
对象,扩展UnixFileSystem
类。
你可以从UnixFileSystem
查看UnixFileSystem
类的例子,就是FileSystem
接口的实现。
这是从UnixFileSystem实现getPath
方法的链接,将返回UnixPath的实例。
您必须记住FileSystems.getDefault
返回依赖于操作系统的实现。 此外,oracle jdk中没有这些类的源代码。
在NetBeans IDE中 ,您可以通过执行以下操作来查看Paths类的实现详细信息:
-
第一步:
在您编写路径代码的行上单击光标。 路径示例如下:
路径p = Paths.get(“someDir \ someOtherDir”);
- 第二步:
单击Debug | 步入(F7)
它将显示Paths的实现细节