我从java documentation开始研究java 8中的nio.2
。当我研究java.nio.file.Path
时,java文档的第一行是
The Path class, introduced in the Java SE 7 release.
这意味着Path
是一个类,但是当我查看here时我发现Path
是一个接口(interface)
。
那为什么java documentation说这是一个类。
我的另一个疑问是如果Path
是一个接口(interface)
,那么Path
方法(如getRoot()
)isAbsolute()
和所有其他)都可以工作,因为没有实现 Path
接口(interface)的方法。
我知道在一份声明中提出两个不同的问题很麻烦,但我不知道如何区分这两个问题。
编辑:此问题不能与 this 重复,因为在 this提问者要求实现Path
接口(interface),但在这里我问的是这个接口(interface)的方法是如何工作的,我的意思是它是由JVM内部执行的还是使用任何其他机制来执行它们。
最佳答案
Path
是一个普通的接口(interface)
,它像任何其他接口(interface)
一样由一个具体的类
实现,该类声明实现它并为接口(interface)
的抽象
方法提供具体方法。所以 Path
的方法没有什么特别的。作为linked question解释说,这个接口(interface)
有普通实现。
您不应该感到困惑,因为它在文档中称为“类”。虽然从最狭义上讲,class
是一种不同于 interface
或 enum
的类型,但从最广泛的意义上来说,这些类型都是类。这反射(reflect)在以下事实:它们都存储在类文件
中,并通过ClassLoader
上的操作名称loadClass
加载。在这些地方,接口(interface)和类之间没有区别。从这个角度来看,接口(interface)和枚举只是具有特殊属性的类(类似地,注释也是具有特殊属性的接口(interface))。
在文档中,当您使用术语“类”的方式没有不同时,在更广泛的意义上使用术语“类”是有意义的,即您在 Path
实例上调用方法而无需关心关于Path
类型是否是接口(interface)
。仅当读者是必须实现差异的人时,才必须强调差异。
关于java - java.nio.Path 的方法如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28576904/