什么是Java数组类的包?

问题描述:

这个问题是针对JVM规范的倡导者。根据JVMS,Java SE 7版,第5.3.3节,最后一段:什么是Java数组类的包?

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

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

您能否在JVMS中找到一个明确定义数组/基本类的包的点(或没有的原因)?

这不正是该规范的报价说的是什么?

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

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

另一种情况适用于本机类型,并且不能向Java添加更多本机类型。