我知道,在java中传递对象时,对象的引用作为值传递。所以你对这个对象所做的任何改变都反映在原始对象中。为了避免这种情况,我们在java中使用了不变性属性。java中的不变性属性
所以我的问题是,我已经创建了一个不变类Employee
,当我通过这个Employee
类在其他类中的一些方法的对象,我不希望这样的方法来对这个对象的任何变化。即使如此,我也不希望这些更改受到调用类中创建的原始对象的影响。
这是我的示例代码。
public final class Employee {
int employeeId;
public int getId() {
return employeeId;
}
public void setId(int id) {
this.employeeId = id;
}
}
public class Worker {
public static void process(Employee f, Employee g){
int c = f.getId();
f.setId(g.getId());
g.setId(c);
}
}
public class ImmutabilityTest{
public static void main(String[] args) {
Employee teamMember = new Employee();
Employee teamLead = new Employee();
teamMember.setId(5);
teamLead.setId(10);
System.out.println("Before process "+teamMember.getId() + " " + teamLead.getId());
Worker.process(teamMember, teamLead);
System.out.println("After process "+teamMember.getId() + " " + teamLead.getId());
}
}
输出将是
Before process 5 10
After process 10 5
有什么办法,以避免在Employee类的成员变量的值的变化? (除了让他们final
)如果不是那么我们如何实际利用不变性在用户定义的类中的Java属性?
任何建议/意见/指针表示赞赏!谢谢..
感谢您的洞察.. – Rakesh 2012-03-21 06:16:59