【发布时间】:2017-10-28 20:39:29
【问题描述】:
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) 并添加一个参数,因为它已被许多类使用,我将不得不重构大量类。对于我的用例,我想使用对象这个类有额外的参数。
【问题讨论】:
-
如果不提供
c,你希望它是什么? -
所有final变量必须在每个构造函数结束时初始化。
-
我希望只在调用构造函数时初始化 c。所以这样我不会破坏现有的类。
标签: java constructor compiler-errors initialization final