我想更好地了解类文件和内部/嵌套类,以下是我的疑问:
InnerClasses
属性是用于引用´包含´类中的内部/嵌套类还是在内部/嵌套类中用于引用‘容器’类?- 类文件中的
InnerClasses
属性是否足够? 例如,内部/嵌套类是否必须遵循$
名称编码?这只是一种约定吗? - 是否有一种方法可以使类看起来像JVM的内部/嵌套类,而不设置
InnerClasses
属性?这取决于JLM供应商吗?(我记得听说IBM的实现在某些部分的要求较少。) - JVM的类加载机制与Java反射有多大交互?是否可能使JVM与Java反射的结果不同?
我试图在JVM规范中查找,但没有找到实际机制的描述。
在“The InnerClasses
Attribute”中,我仅发现与我的问题相关联的这句话:
The Java虚拟机当前不检查InnerClasses属性与任何由该属性引用的类或接口实际表示的类文件的一致性。