我根据不变性的概念开发了一个下面的代码,因为我们知道java字符串类是不可变的所以我也开发了下面的类作为不可变的,请告诉我它是不正确的,因为不可变性..
public final class BrokenPerson
{
private String firstName;
private String lastName;
private Date dob;
public BrokenPerson( String firstName, String lastName, Date adob)
{
this.firstName = firstName;
this.lastName = lastName;
this.dob = new Date(adob.getTime());
}
public String getFirstName()
{
return this.firstName;
}
public String getLastName()
{
return this.lastName;
}
public Date getDOB()
{
return new Date(dob.getTime());
}
}
答案 0 :(得分:4)
final
应用于类使其不可扩展,而不是不可变。
您希望您的会员成为final
。
public final class BrokenPerson
{
private final String firstName;
private final String lastName;
private final Date dob;
//...
}
当然,就像现在一样,无法修改类,因为私有字段不会被任何成员方法修改,但是,为了严格,您应该将它们标记为final
。
答案 1 :(得分:0)
这是正确的,因为无法修改对象