2010-07-28 24 views
4
public class User 
{ 
    private final String _first_name; 
    private final String _last_name; 
    private final String _org_ID; 
    private final TimeZone _time_zone; 
    private final InternetAddress _email; 
    private final Date _last_login; 
    private final Date _creation_date; 


     public User(final String org_ID, 
          final String username, 
          final String first_name, 
          final String last_name, 
          final List<String> roles, 
          final TimeZone time_zone, 
          final InternetAddress email, 
          final Date last_login, 
          final Date creation_date) 
     { 
      this(null, org_ID, username, first_name, last_name, roles, time_zone); 

      this._email = email; 
      this._last_login = last_login; 
      this._creation_date = creation_date; 
     } 

編譯器給出了分別在3個變量賦值了以下錯誤: 「變量_EMAIL可能已經被分配」Java的構造函數最後一個變量賦值

是編譯器無法分辨變量未設置在打電話給第一個ctor?我在這裏錯過了什麼?

回答

3

要添加到irreputable所說的內容,您可能需要重構代碼,以便具有較少參數的構造函數使用更多參數調用構造函數,並根據具體情況指定合理的默認值或null。

您收到錯誤的原因是因爲參數較少的構造函數必須處理未明確處理的字段。但是,如果您調用構造函數的方式,您將避免此問題。

+0

啊,這是有道理的。感謝Mike的解釋。 – 2010-07-28 03:17:22

2

所以編譯器不夠智能。幫助它。

通常,帶較少參數的構造函數會使用更多參數調用構造函數,而不像您的那樣。

1

您已將變量聲明爲final。最終變量在初始分配後不能設置爲其他值。即使通過使用構造函數。

相關問題