Почему этот код не компилируется?
public class A {
public class B extends A {
public B(A a) { }
}
void foo() {
A a = new A();
new B(a) { };
}
}
A.java:[7,17] cannot reference this before supertype constructor has been called
Компиляция успешна, если выполнено одно из этих изменений:
-
B
является закрытым, а не общедоступным. - строка 7 читает
new B(A);
вместоnew B(A) { }
Использование версии javac: 1.6.0_20