这个问题是JVM规范倡导者的问题。根据JVMS,Java 7版,第5.3.3节,最后一段:
如果组件类型是引用类型,则数组类的可访问性由其组件类型的可访问性决定。否则,数组类的可访问性是公共的。
因此,数组类可以具有包的可见性。从逻辑上讲,如果foo.baz.MyClass具有包的可见性,那么MyClass数组只对包foo.baz可见。但是我在规范中找不到支持这个视图的任何东西。第5.3节说,应该用来确定可见性约束的运行时包是由包的二进制名称和定义的类加载器构建的。但是二进制名称来自类文件,数组类没有类文件。原语类(如Boolean.TYPE)也存在类似的问题,这些类显然具有公共可见性,但我在任何地方都找不到关于它们的信息。
您能发现JVMS中有一个点清楚地定义了数组/基元类包(或者没有定义数组/基元类的原因)吗?
发布于 2013-04-11 12:14:08
这不正是从说明书中引用的意思吗?
如果组件类型是引用类型,则数组类的可访问性由其组件类型的可访问性决定。
如果您有一个类some.pkg.SomeClass并希望将其用作some.pkg.SomeClass[],则可访问性由其组件类型的可访问性决定。在这种情况下,组件类型是some.pkg.SomeClass。
另一种情况是本机类型,您不能向Java中添加更多的本机类型。
https://stackoverflow.com/questions/15946757
复制相似问题