在Java中使用Path和Path
路径和路径之间的交互似乎很简单。使用路径get()
方法获得路径对象。然后可以使用Path的方法:
Path p = Paths.get("C:\\directory\\filename.txt");
p.getFilename();
p.getRoot();
p.getParent();
etc...
让我困惑的是,Java文档将Path描述为一个接口。通常来说,接口只是一个方法签名的集合,您需要在任何类中实现它,这些类通过implements
关键字声明它使用它
然而,在Path的情况下,没有使用“implements”关键字,也没有实现方法。它们已经预先定义好了
很明显,我在某个地方搞错了。有人能解释一下我误解了什么吗
# 1 楼答案
这是OOP取代基原理http://en.wikipedia.org/wiki/Liskov_substitution_principle
在我们的例子中,这意味着路径可以返回实现路径的任何类的实例。如果我打印出实际的类名
我去拿
如您所见,这是Windows特定的路径实现。当然,在Linux上,我们会得到一些不同的东西。使用返回接口的静态工厂方法允许此方法更改此接口的实际实现
# 2 楼答案
返回结果
Path
实现的对象(基于操作系统)。路径是通过调用默认FileSystem
的getPath()
方法获得的# 3 楼答案
Path
是一个接口,Paths.get()
是一个用于生成具体实现的工厂方法返回的具体类将取决于您的操作系统和文件系统类型