0

该机制是如何通过继承隐藏/隐藏字段并稍后解决 JVM 规范的一部分?我知道它是Java 规范的一部分,可以在许多博客文章和 SO 问题中找到。但是,当我实际查看 JVM 规范中的字段解析时,“隐藏”或“阴影”这两个词并没有出现在JVM 规范的 pdf 中的任何位置。

我问这个是因为我正在编写自己的 JVM,并且发现这个字段阴影是字节码/VM 的属性,而不仅仅是 Java 编译器或 Java 语言的一部分。我想知道应该在 VM 级别实施的正确、权威的方式。当然,JVM 的一个(错误?)特性需要在某个地方正式记录这一重要的特性吗?

4

1 回答 1

0

阴影一词通常是指当一个标识符阴影另一个时。即一个给定的名称可以引用多个变量,因此必须有一种机制来消除它的歧义。这主要是一种语言级别的结构,因为它包含更多的名称。局部变量名称根本不会出现在字节码中,除了作为可选的调试信息之外。

从字节码的角度来看,您已经有了对类、名称和描述符的显式引用。唯一的问题是您所描述的字段是否实际上是在您指定的类中声明的,或者它是否是从它的超类之一继承的。

正如您已经发现的那样,字段分辨率在5.4.3.2标准部分进行了解释。没有使用术语隐藏和阴影,因为它们适用于源代码,而不是类文件。

于 2013-03-23T03:02:02.193 回答