首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.nio.file: Path接口实际上是在哪里实现的?

java.nio.file: Path接口实际上是在哪里实现的?
EN

Stack Overflow用户
提问于 2013-12-30 16:44:54
回答 2查看 9.5K关注 0票数 18

最近,我使用Java7中引入的java.nio.file包进行了一些编码,看到了一个使用如下路径的示例:

代码语言:javascript
复制
Path path = Paths.get("C:\\Users");

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

代码语言:javascript
复制
public static Path get(String first, String... more) {
    return FileSystems.getDefault().getPath(first, more);
}    

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

我的问题是,有没有人知道/能够解释Path接口实际上是在哪里实现的,因为我似乎找不到它发生在哪里。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-30 19:05:25

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

例如,您可以查看openjdk中的UnixFileSystem类,它是FileSystem接口的实现。

下面是来自UnixFileSystemgetPath方法实现的链接,它将返回UnixPath的实例。

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

票数 13
EN

Stack Overflow用户

发布于 2015-03-31 22:59:55

在NetBeans集成开发环境中,您可以通过执行以下操作来查看路径类的实现详细信息:

  • 第一步:

在已写入路径代码的行上单击光标。示例路径为:

路径p=Paths.get(“某个目录\某个其他目录”);

  • 第二步:

单击调试|单步执行(F7)

它将显示路径的实现详细信息

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20836121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档