2012-05-05 39 views
0

我已經開發了一個基於不變性概念的下面的代碼,正如我們在java中所知的那樣,string類是不可變的,所以我也開發了下面的類作爲不可變的,請告訴我它是否正確無誤。關於不可變的類

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

+0

@ Luchian..yeah哥們使其最終給予更多的屏蔽 – dghtr

+0

還有引用當Java內存模型由'final'領域具有一定的保障跨多個線程的實例。 – Grundlefleck