2016-10-10 94 views
-3

假設我有一個客戶類有一個地址類的引用,我們可以通過使成員變量私有最終等等等等變量的私有類的對象....我的問題是這個地址類是可變的getter和setter有它的在Customer類中引用,現在我們如何使Customer類不可變?在客戶類中使這個地址引用是否足以使其成爲不可變類(客戶類的對象不可變)是否可以解釋?如何用可變成員變量創建不可變類?

現在在場景中,我們如何讓Customer類的對象不可變?以及客戶和地址之間的關係如何顯示在內存中?有人可以回答這個問題嗎?

public final class Customer{ 
    private final String name; 
    private final Address address; 

    public Customer(String name, Address address){ 
     this.name=name; 
     this.address= address; 
    } 

    public String getName(){ 
     return this.name; 
    } 

    public String getAddress(){ 
     return this.name; 
    } 

}

public class Address{ 
private String streetName; 
private Long pincode; 

public void setStreeName(String streetName){ 
    this.streetName = streetName; 
} 

public void setPincode(long pincode){ 
    this.pincode = pincode; 
} 

public String getStreetName(){ 
    return this.streeName; 
} 

public long getPincode(){ 
    return this.pincode; 
} 

}

+0

刪除'Customer'和'Address'中的所有setter,並將所有字段設置爲final。 – marstran

+2

你應該試圖更具體,甚至可以添加一個小代碼來說明你的問題 – AxelH

+0

請詳細說明情況。 – 2016-10-10 13:34:20

回答

0

在客戶類上面的其他數據類型是原始的(不可變)其中,而地址類是沒有,所以在地址的吸氣劑的方法我們應該返回一個新的地址對象,其屬性類似於客戶類中的地址引用。