java - java.nio.Path 的方法如何工作

标签 java oracle java-8

我从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 是一种不同于 interfaceenum 的类型,但从最广泛的意义上来说,这些类型都是类。这反射(reflect)在以下事实:它们都存储在类文件中,并通过ClassLoader上的操作名称loadClass加载。在这些地方,接口(interface)和类之间没有区别。从这个角度来看,接口(interface)和枚举只是具有特殊属性的类(类似地,注释也是具有特殊属性的接口(interface))。

在文档中,当您使用术语“类”的方式没有不同时,在更广泛的意义上使用术语“类”是有意义的,即您在 Path 实例上调用方法而无需关心关于Path类型是否是接口(interface)。仅当读者是必须实现差异的人时,才必须强调差异。

关于java - java.nio.Path 的方法如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28576904/

相关文章:

java - 在接口(interface)默认方法中使用 spring 托管 beans?

java - 多个消费者线程总体消费队列 FIFO

java - 添加到 JMenuItem 的附加信息

.net - oracle sql Developer中的J2SE SDK配置

oracle - EXCEPTION block 内将使用哪些 PRAGMA 语句?

java - 使用 java 8 从 map 中使用比较器和 crieria 进行排序

java - 只是Java中的一个小递归问题

java - 在 Java Swing 应用程序中实现 Spring Security

sql - (未成功)测试Oracle SQL中索引的效果

java - 使用 Java 流对内部映射进行分组