相关疑难解决方法(0)

奇怪的情况"在超类型构造函数被调用之前无法引用它"

为什么这段代码不能编译?

public class A {
    public class B extends A {
        public B(A a) { }
    }
    void foo() {
        A a = new A();
        new B(a) { };
    }
}
Run Code Online (Sandbox Code Playgroud)

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

java

15
推荐指数
1
解决办法
9469
查看次数

标签 统计

java ×1