java中final字段的多个构造函数
我在课堂上有一些最后的字段,比如java中final字段的多个构造函数,java,constructor,static,final,Java,Constructor,Static,Final,我在课堂上有一些最后的字段,比如 class A { private final boolean a; private final boolean b; public A(boolean a){ this.a = a; } public A(boolean a, boolean b){ this.a = a; this.b = b; } } 但这会导致一个错误,即最终字段“b”可能尚未初始化。 因此,对于如何在多个构造函数的情况下处理最终属性初始
class A {
private final boolean a;
private final boolean b;
public A(boolean a){
this.a = a;
}
public A(boolean a, boolean b){
this.a = a;
this.b = b;
}
}
但这会导致一个错误,即最终字段“b”可能尚未初始化。
因此,对于如何在多个构造函数的情况下处理最终属性初始化,我们将不胜感激。如果我只有第二个构造函数,它可以正常工作。您可以将b初始化为默认值false。所有最终变量都应该在构造函数中初始化
public A(boolean a){
this.a = a;
this.b = false;
}
或者应该调用其他构造函数来初始化它们
public A(boolean a){
this(a, false);
}
public A(boolean a, boolean b){
this.a = a;
this.b = b;
}
问题是第一个构造函数没有初始化b,所以java不能假定任何值,标准做法是编写如下代码:
public A(boolean a){
this(a, DEFAULT VALUE FOR B);
}
public A(boolean a, boolean b){
this.a = a;
this.b = b;
}
这样,您只有一个真正的构造函数,所有其他构造函数都只是它的捷径您也可以从另一个构造函数调用该构造函数:
public class A{
private final boolean a;
private final boolean b;
public A(boolean a){
this(a,false);
}
public A(boolean a, boolean b){
this.a = a;
this.b = b;
}
}