0

这个问题是针对 JVM 规范倡导者的。根据 JVMS,Java SE 7 版本,第 5.3.3 节,最后一段:

如果组件类型是引用类型,则数组类的可访问性由其组件类型的可访问性决定。否则,数组类的可访问性是公开的。

因此,数组类可以具有包可见性。从逻辑上讲,我希望,如果 foo.baz.MyClass 具有包可见性,那么 MyClass 的数组仅对包 foo.baz 可见。但我在规范中找不到任何支持这种观点的东西。5.3 节说,应该用来确定可见性约束的运行时包是由包的二进制名称加上定义的类加载器构建的。但是二进制名称来自类文件,而数组类没有类文件。原始类(例如,Boolean.TYPE)的类似问题,显然具有公共可见性,但我无法在任何地方找到有关它们的信息。

你能在 JVMS 中找到一个明确定义数组/原始类包的点(或者没有的原因)吗?

4

1 回答 1

0

这不正是规范中的引用所说的吗?

如果组件类型是引用类型,则数组类的可访问性由其组件类型的可访问性决定。

如果您有一个类 some.pkg.SomeClass 并希望将其用作 some.pkg.SomeClass[] ,则可访问性由其组件类型的可访问性决定。在这种情况下,组件类型是 some.pkg.SomeClass。

另一种情况是原生类型,你不能向 Java 添加更多的原生类型。

于 2013-04-11T12:14:08.287 回答