2016-10-10 3 views
-3

私は、アドレスクラスの参照を持つ顧客クラスを持っていると仮定して、私たちは、顧客変数のプライベート最終的なばかなことを作ることによって、顧客クラスのオブジェクトを作ることができます....私の質問は、このアドレスクラスは、 Customerクラスでの参照、今はどのようにしてCustomerクラスを不変にすることができますか?顧客クラスのこのAddress参照を作成するだけで不変クラス(顧客クラスのオブジェクトは不変)にすることができますか?可変メンバ変数を使用して不変クラスを作成するにはどうすればよいですか?

ここで、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'のすべてのセッターを削除し、すべてのフィールドを 'final'にします。 – marstran

+2

あなたはより具体的にしようとする必要があります。あなたの質問を説明する小さなコードを追加することもできます。 – AxelH

+0

シナリオを詳しく説明してください。 –

答えて

0

私たちは顧客クラスのアドレス参照と同様のプロパティを持つ新しいアドレスオブジェクトを返すべきです。

関連する問題