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

オブジェクトを変更する方法がないため、これは正しいです

于 2012-05-05T16:10:55.917 に答える