假设我有结构
class A {
class B {}
class C extends B {}
}
似乎C
的实例应该有2个对根类A
的引用:第一个是从B
超类继承的,第二个是自己的隐式内部类引用。我的问题:JVM(HotSpot)是否优化了这种情况,只保留了一个对根类的引用?
答案 0 :(得分:1)
我反编译了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;
}
}
}