如何编写2个构造函数来初始化2个不同的私有最终变量?
public class InitialisingFields {
private final String a;
private final String b;
private final String c;
InitialisingFields(String a,String b){
this.a = a;
this.b = b;
}
InitialisingFields(String a,String b,String c){
this(a , b);
this.c = c;
}
public static void main(String[] args) {
InitialisingFields i = new InitialisingFields("A","B","C");
}
}
我想写InitialisingFields(String a,String b,String c)
构造函数,但它给我编译错误。如何编写2个构造函数来初始化2个不同的私有最终变量?
为InitialisingFields(String a,String b)
它说:“最后的空白领域c可没有被初始化” & 为InitialisingFields(String a,String b,String c)
它说:“最后的空白领域c可已经被初始化”
我不想修改InitialisingFields(String a,String b)
和添加一个参数,因为它已被很多类使用,我将不得不重构大量的类。并且对于我的用例,我希望使用此类的对象和其他参数。
你应该全面走另一条路 - 有一个构造函数初始化所有的领域,并有其他(一个或多个)以默认值叫它:
InitialisingFields(String a, String b) {
this(a, b, null);
}
InitialisingFields(String a, String b, String c) {
this.a = a;
this.b = b;
this.c = c;
}
问题是,如果我修改了现有的构造函数,那么我必须修复很多类,这个构造函数已经被使用,并且数量巨大。 –
@AmardeepSingh我建议的修正更改了给定构造函数的**实现**,而不是它的**签名**。您将**不**必须修改任何使用它的代码。 – Mureinik
太好了,非常感谢。 –
你想要什么'C'是如果不提供? –
所有_final_变量必须在_each构造函数_的末尾初始化。 –
我希望c只在我调用构造函数时才被初始化。所以这样我就不会打破现有的类。 –