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)
并添加一个参数,因为它已被很多类使用,我将不得不重构大量类。对于我的用例,我想使用带有附加参数的此类对象。
最佳答案
你应该反其道而行之——让一个构造函数初始化所有字段并让其他构造函数使用默认值调用它:
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;
}
关于java - 如何编写 2 个构造函数来初始化 2 个不同的私有(private)最终变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46994264/