Spa*_*vić 2 java data-structures
可以说我有这样的情况。
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;
}
Run Code Online (Sandbox Code Playgroud)
为什么 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;
}
Run Code Online (Sandbox Code Playgroud)
小智 6
根据 JLS 规范\n http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.3.1.2
\n\n必须在声明它的类的每个构造函数 (\xc2\xa78.8) 的末尾明确分配一个空白的最终实例变量 (\xc2\xa716.9);否则会发生编译时错误。\n这就是 Idea 抱怨的原因。
\n| 归档时间: |
|
| 查看次数: |
13783 次 |
| 最近记录: |