关于不可变类

时间:2012-05-05 16:07:43

标签: java immutability

我根据不变性的概念开发了一个下面的代码,因为我们知道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());


    }
}

2 个答案:

答案 0 :(得分:4)

final应用于类使其不可扩展,而不是不可变。

您希望您的会员成为final

public final class BrokenPerson
{
    private final String firstName;
    private final String lastName;
    private final Date dob;
    //...
}

当然,就像现在一样,无法修改类,因为私有字段不会被任何成员方法修改,但是,为了严格,您应该将它们标记为final

答案 1 :(得分:0)

这是正确的,因为无法修改对象