soc*_*soc 6 language-agnostic jvm bytecode class vm-implementation
我想更好地理解类文件和内部/嵌套类,我想知道以下事情:
InnerClasses使用的属性来指tothe内/嵌套类在'containing'类或它在内部/嵌套类用来指所述"容器"类?InnerClasses类文件中的属性是否足够?例如,内部/嵌套类必须遵循名称修改$或这只是一个约定吗?InnerClasses属性,这取决于JLM供应商?(我记得听说IBM的实现在某些部分的要求不那么严格.)我尝试在JVM规范中查找它,但没有找到实际机制的描述.
我只在与我的问题远程连接的" InnerClasses属性"中找到了这句话:
Java虚拟机当前不检查InnerClasses属性与实际表示属性引用的类或接口的任何类文件的一致性.
对之前的回答做一些补充:
\n\n\nInnerClasses 属性是用于存储包含类中包含的内部/嵌套类,还是在内部/嵌套类中使用它来引用 \xe2\x80\x98container\xe2\x80\x99 类?
\n
每个编译类的字节码都存储在单独的 .class 文件中。实际的“内部类”不存储在该属性中。正如上一篇文章所指出的,该属性仅指向编译器在创建字节码时知道的类。
\n\n\n类文件中的 InnerClasses 属性是否足够?例如,内部/嵌套类是否必须遵循带有 $ 的名称修饰,或者这只是一个约定?
\n有没有办法让一个类看起来像 JVM 的内部/嵌套类,而不需要设置 InnerClasses 属性,这是否取决于 JLM 供应商?(我记得听说IBM的实现在某些部分没有那么严格的要求。)
\n
对于这两个问题,我都不确定。但我认为内部/嵌套类的概念是 Java 语言(因此 Java 编译器提供)的概念。在字节码中,声明为普通公共类的类与某些嵌套类或内部类之间不应该有任何区别。\n您可以轻松尝试给定的 VM 如何处理此问题,如下所示:
\n\n\nJVM的类加载机制与Java反射有多少交互?是否有可能使 JVM 不同意 Java 反射的结果?
\n
我不明白最后一个问题。当你说虚拟机和反射应该不一致时,你能解释一下你的意思吗?
\n| 归档时间: |
|
| 查看次数: |
737 次 |
| 最近记录: |