0

次のコードにはエラーがあります。

class A
{

  private final String val;

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

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

エラーは「変数 val が既に割り当てられている可能性があります。

デフォルトのコンストラクターにある可能性のあるコードを書き直さずに、このエラーの回避策はありますか? これは最小限の実例です。「デフォルトのコンストラクターのコード」を自問している場合は、実際の例には、他のコンストラクターで繰り返したくないコードが大量に含まれている可能性があることに注意してください (他の最終変数の割り当てなど)。

これは最小限の例であり、同じ問題が多数のコンストラクターに存在することも覚えておいてください。

4

1 に答える 1

5

あなたは間違った方向に連鎖しています。これも理解するのにしばらく時間がかかりましたが、例を次のように変更します。

class A
{

  private final String val;

  public A(){
    this(null);
  }

  public A(String val){
    this.val = val;
  }
}
于 2012-09-06T18:55:07.003 に答える