java 中最终字段的多个构造函数
multiple constructors for final fields in java
我在 class 中有一些最终字段,例如
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;
}
这样你只有 1 个真正的构造函数,所有其他构造函数只是它的捷径
您也可以从另一个构造函数调用构造函数:
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;
}
}
我在 class 中有一些最终字段,例如
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;
}
这样你只有 1 个真正的构造函数,所有其他构造函数只是它的捷径
您也可以从另一个构造函数调用构造函数:
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;
}
}