2016-10-10 216 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

在客户类上面的其他数据类型是原始的(不可变)其中,而地址类是没有,所以在地址的吸气剂的方法我们应该返回一个新的地址对象,其属性类似于客户类中的地址引用。