@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(); |