Я делаю копию своего объекта с помощью метода clone ().Но когда в копии есть изменение, исходный объект также изменяется.Я попытался повторить мою проблему в следующем примере.Вот 2 класса ClassA и ClassB.
public class ClassB implements Cloneable
{
int num = 0;
byte[] bit = new byte[1];
//Getters and setters have been removed due to space constraint
public Object clone()
{
try
{
ClassB obj = (ClassB)super.clone();
obj.setNum(this.num);
obj.setBit(this.bit);
return obj;
} catch (CloneNotSupportedException e) {
return null; }
}
}
// Вот ClassA, который содержит метод main и использует клон
public class ClassA {
public void cloneMethod(){
ClassB objB = new ClassB();
objB.bit[0] = (byte)0x8;
objB.setNum(5);
ClassB objCopy = null;
objCopy = (ClassB) objB.clone();
if(objCopy.bit[0] != (byte)0x0)
{
objCopy.bit[0] = 0;
}
System.out.println(objB.bit[0]); //At this point the original object value is also modified.
}
public static void main(String args[])
{
ClassA a = new ClassA();
a.cloneMethod();
}
}
Теперь, как сохранить исходное значение объекта?Я знаю, что клон имеет определенные недостатки.Я пробовал с новым ключевым словом, но это не помогает. Пожалуйста, предложите.в моем исходном коде я должен использовать исходное значение бита объекта позже для дальнейших вычислений, и значение бита объекта копирования будет равно 0. Спасибо.