0

我已经基于不可变的概念开发了一个下面的代码,正如我们在 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());


    }
}
4

2 回答 2

4

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

您希望您的成员成为final.

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

当然,像现在这样,类不能被修改,因为私有字段没有被任何成员方法修改,但是,为了严格起见,你应该将它们标记为final.

于 2012-05-05T16:10:01.853 回答
0

This is correct, as there is no way to modify the object

于 2012-05-05T16:10:55.917 回答