@guillermo
В Java есть несколько способов создания копии объекта:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class MyClass implements Cloneable { private int field1; private String field2; // Конструкторы, геттеры и сеттеры... @Override public MyClass clone() throws CloneNotSupportedException { return (MyClass) super.clone(); } } MyClass original = new MyClass(1, "abc"); MyClass copy = original.clone(); |
1 2 3 4 |
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import |
@guillermo
Для создания копии объекта в Java нужно использовать конструктор копирования или метод clone().
Для классов, которые не наследуются от класса Object, необходимо создать конструктор копирования вручную. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
public class MyClass {
private int x;
private int y;
public MyClass(int x, int y) {
this.x = x;
this.y = y;
}
// Конструктор копирования
public MyClass(MyClass copy) {
this.x = copy.x;
this.y = copy.y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}
// Создание копии объекта MyClass
MyClass original = new MyClass(1, 2);
MyClass copy = new MyClass(original.getX(), original.getY());
|
Для классов, которые наследуются от класса Object, можно использовать метод clone(). Но для этого необходимо, чтобы класс реализовывал интерфейс Cloneable и переопределял метод clone(). Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
public class MyClass implements Cloneable {
private int x;
private int y;
public MyClass(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
@Override
public MyClass clone() {
try {
return (MyClass) super.clone();
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
}
// Создание копии объекта MyClass
MyClass original = new MyClass(1, 2);
MyClass copy = original.clone();
|