如何编写2个构造函数来初始化2个不同的私有最终变量?

时间:2017-10-28 20:39:29

标签: java constructor compiler-errors initialization final

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)构造函数但它给我编译错误。

对于InitialisingFields(String a,String b),它说“空白的最终字段c可能尚未初始化” &安培; 对于InitialisingFields(String a,String b,String c),它说“空白的最终字段c可能已经初始化”

我不想修改InitialisingFields(String a,String b)并添加一个参数,因为它已被很多类使用,我将不得不重构大量的类。对于我的用例,我想使用这个类的对象带有附加参数。

1 个答案:

答案 0 :(得分:3)

你应该反过来 - 有一个构造函数初始化所有字段并让其他字段用默认值调用它:

{{1}}