2010-07-28 23 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。最终变量在初始分配后不能设置为其他值。即使通过使用构造函数。

相关问题