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