让我们来看看Java中会发生什么。
// Create a new Person object
// and let the variable objperson1 refer to it
Person objperson1 = new Person();
// Call the method setAge(int) on the object previously created
objperson1.setAge(30);
// Create another Person object
// and let the variable objperson2 refer to it
Person objperson2 = new Person();
// Let the variable objperson2 refer to the object objperson1
// is referring to.
// The reference to the Person objperson2 was referring to
// HAS NO LONGER A REFERENCE TO IT. You can never reach that object again.
objperson2 = objperson1;
// Setting the age on objperson1 reflects a change in objperson2, because
// they refer to the very same object
objperson1.setAge(40);
这里的误解是什么propably你认为var1 = var2
实际上克隆是什么。
有一种方法克隆你的对象,如this answer所述。
但问题是你是否需要克隆两个对象。你可以创建两个对象是这样的:
Person alan = new Person(30);
Person boris = new Person(30);
boris.setAge(40);
PS:使用clone()
和实施Cloneable
接口为discouraged in Effective Java。
尝试克隆对象 –
'objperson2 = objperson1;' - 现在你不再有两个对象,但只有一个。 –
实现可复制的界面 – Lokesh