这个问题适用于JVM规范的拥护者。根据JVMS,Java SE 7版本,第5.3.3节,最后一段:
如果组件类型是引用类型,则数组类的可访问性由其组件类型的可访问性决定。否则,数组类的可访问性是公共的。
因此,数组类可以具有包可见性。逻辑上我希望,如果foo.baz.MyClass具有包可见性,那么只有包foo.baz才能看到MyClass数组。但我在规范中找不到支持此视图的任何内容。第5.3节说明应该用于确定可见性约束的运行时包是由包的二进制名称和定义的类加载器构成的。但二进制名称来自类文件,而数组类没有类文件。原始类(例如,Boolean.TYPE)的类似问题,显然具有公众可见性,但我无法在任何地方找到有关它们的信息。
你能否在JVMS中发现一个明确定义数组/基本类包的原因(或没有原因的原因)?
答案 0 :(得分:0)
这不完全是说明书中引用的内容吗?
如果组件类型是引用类型,则数组类的可访问性由其组件类型的可访问性决定。
如果您有一个some.pkg.SomeClass类并希望将其用作some.pkg.SomeClass [],则可访问性由其组件类型的可访问性决定。在这种情况下,组件类型是some.pkg.SomeClass。
另一种情况是本机类型,您无法向Java添加更多本机类型。