假设我遇到了这样的情况。
private final A a;
private final B b;
private final C c;
private ClassX(){
this.c = createCSomehow();
}
public ClassX(A a){
this();
this.a = a;
this.b = null;
}
public ClassX(B b) {
this();
this.b = b;
this.a = null;
}
为什么 Idea 会提示 a 和 b 属性?想法在它们下面划线并说:变量 a 可能尚未初始化。我确信我没有更多的构造函数,并且在每种情况下 a 都会填充一些值。
最佳答案
我真的不知道如何正确回答原因(需要 JLS 调查),但对于如何,应该编译以下内容:
private final A a;
private final B b;
private final C c = createCSomehow();
public Main(A a){
this.a = a;
this.b = null;
}
public Main(B b) {
this.b = b;
this.a = null;
}
关于java - 在java构造函数中初始化final变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42926666/