在Java中使用路径和路径

Path和Paths之间的交互似乎很简单.使用Paths的get()方法获取Path对象.然后,您可以使用Path的方法:

Path p = Paths.get("C:\\directory\\filename.txt");
p.getFilename();
p.getRoot();
p.getParent();
etc...

令我困惑的是,Java文档将Path描述为一个接口.通常来说,接口只是方法签名的集合,您需要在任何类中实现它们,这些类声明它通过implements关键字使用它.

但是,在Path的情况下,没有使用“implements”关键字,也没有实现这些方法.他们已经预定义了.

我显然在某个地方得到了错误的结局.有人可以解释一下我误解了什么吗?

最佳答案
它是OOP替代原则http://en.wikipedia.org/wiki/Liskov_substitution_principle

If S is a T, then references to T can be changed to references to S

在我们的例子中,它意味着Paths可以返回任何实现Path的类的实例.如果我打印实际的类名

System.out.println(p.getClass());

我去拿

class sun.nio.fs.WindowsPath

如您所见,这是Windows特定的Path实现.当然在Linux上我们会得到一些不同的东西.使用返回接口的静态工厂方法允许此方法更改此接口的实际实现.

转载注明原文:在Java中使用路径和路径 - 代码日志