变量可能已经被分配

Lim*_*ent 0 java constructor variable-initialization constructor-chaining

以下代码有错误:

class A
{

  private final String val;

  public A(){
    this.val = null;
  }

  public A(String val){
    this();
    this.val = val;
  }
}
Run Code Online (Sandbox Code Playgroud)

错误是“可能已经分配了变量 val

是否有解决此错误的方法,而无需重新编写可能在默认构造函数中的任何代码?这是一个最小的工作示例;如果你问自己“默认构造函数中有哪些代码”,请记住,一个真实的例子可能有很多你不想在其他构造函数中重复的代码(分配其他最终变量等)。

还请记住,这是一个最小的例子,同样的问题存在于大量的构造函数中。

Lim*_*ent 5

你在错误的方向链接。这也花了我一段时间才弄清楚,但是像这样改变你的例子:

class A
{

  private final String val;

  public A(){
    this(null);
  }

  public A(String val){
    this.val = val;
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 感觉有点精神分裂? (14认同)