0

下面的代碼中有一個錯誤:變量可能已經被分配

class A 
{ 

    private final String val; 

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

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

錯誤是「變量val可能已經被分配

是否有此錯誤的解決方法,而無需重新編寫任何可能在默認構造函數中的代碼?這是一個最小工作示例;如果您問自己「默認構造函數中的代碼是什麼」,請記住,一個真正的示例可能有大量的代碼,您不會想要在其他構造函數中重複(分配其他最終變量等)。

請注意,這是一個最小的例子,同樣的問題存在於大量的構造函數中。

回答

2

你在錯誤的方向鏈接。這也花了我一段時間才弄清楚,但改變你的例子是這樣的:

class A 
{ 

    private final String val; 

    public A(){ 
    this(null); 
    } 

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

優秀點。謝謝! –

+12

感覺有點精神分裂症? –

+0

什麼使原始鏈接不正確? Java規範中是否存在某些指示您無法按指示鏈接的內容? –