Java 另一个内部类的内部子类-根类的引用数是多少?

Java 另一个内部类的内部子类-根类的引用数是多少?,java,subclass,inner-classes,memory-layout,Java,Subclass,Inner Classes,Memory Layout,假设我有这个结构 class A { class B {} class C extends B {} } 似乎C的实例应该有两个对根类A的引用:第一个是从B超类继承的,第二个是自己的隐式内部类引用。我的问题:JVM(HotSpot)是否优化了这种情况,并且只保留了一个对根类的引用?我反编译了A.class,得到的结果显示了对A的两个引用,一个来自B,一个来自C。但这实际上意味着C实际上有两个引用——一个是它自己的引用,另一个是从B继承的引用 class A { cla

假设我有这个结构

class A {
    class B {}
    class C extends B {}
}

似乎
C
的实例应该有两个对根类
A
的引用:第一个是从
B
超类继承的,第二个是自己的隐式内部类引用。我的问题:JVM(HotSpot)是否优化了这种情况,并且只保留了一个对根类的引用?

我反编译了A.class,得到的结果显示了对A的两个引用,一个来自B,一个来自C。但这实际上意味着C实际上有两个引用——一个是它自己的引用,另一个是从B继承的引用

class A {

    class B {
        final A this$0;
        B() {
            this$0 = A.this;
        }
    }

    class C extends B {
        final A this$0;
        C() {
            this$0 = A.this;
        }
    }
}

JVM并没有义务严格遵循字节码,并浪费2个相等引用的空间。