Map.Entry是如何声明的



地图文档。开始时的条目状态:

公共静态接口Map.Entry<K、 V>

但如果我查看OpenJDK存储库中的源文件Map.java,Map接口似乎将Entry简单地声明为:

接口条目<K、 V>

我很困惑为什么修饰符"公共静态";缺少。如果实际源代码省略了这些修饰符,Map.Entry如何成为Map的公共静态成员?

publicstatic修饰符隐含在源代码中,因为Entry接口是Map接口的成员。参见JLS部分:

§6.6.1

所有缺少访问修饰符的接口成员都是隐式公共的。

§9.1.1.3

嵌套接口是隐式静态的。也就是说,每个成员接口和本地接口都是静态的。允许成员接口的声明冗余地指定静态修饰符(§9.5(,但不允许本地接口的声明(§14.3(

public static添加到接口声明中是非常好的(不会产生错误(。

毕竟,文档的目的是通知人员,而不是100%准确地反映源代码中的内容。与其让读者通过访问JLS来弄清楚接口隐含地有什么修饰符,不如方便地在标头后的第一行中说明它。

最新更新