机制是如何通过继承隐藏/隐藏字段以及后来解析的JVM规范的一部分?我知道它是part of the Java spec,可以在许多博客文章和SO问题中找到。但是,当我实际查看field resolution的JVM规范时,“隐藏”或“隐藏”字样不会出现在pdf of the JVM spec中的任何位置。
我问这个是因为我正在编写自己的JVM,并发现这个字段阴影是字节码/ VM的属性,而不仅仅是Java编译器或Java-the-language的一部分。我想知道在VM级别应该实现的正确,权威的方式。肯定是JVM的一个(错误?)功能,这个重要的东西需要在某个地方正式记录?
答案 0 :(得分:0)
术语阴影通常是指一个标识符影响另一个标识符。即,给定的名称可以引用多个变量,因此必须有一种机制来消除它的歧义。这主要是语言级别的构造,因为它包含更多名称。除了作为可选的调试信息之外,本地变量名称根本不会出现在字节码中。
从字节码的角度来看,您已经明确引用了类,名称和描述符。唯一的问题是您所描述的字段是否实际在您指定的类中声明,或者它是否是从其中一个超类继承的。
正如您已经发现的那样,字段分辨率在标准的5.4.3.2
部分进行了解释。不使用术语隐藏和阴影,因为它们适用于源代码,而不适用于类文件。