Копирование объектов в Java - PullRequest
       10

Копирование объектов в Java

2 голосов
/ 09 октября 2011

Я хочу выполнить глубокое копирование объекта, работает ли функция clone до такой степени, или мне нужно создать функцию, чтобы физически скопировать ее и вернуть указатель на нее? То есть я хочу

Board tempBoard = board.copy();

Это скопирует объект платы в tempBoard, где хранится объект платы:

public interface Board {
    Board copy();
}

public class BoardConcrete implements Board {
    @override
    public Board copy() {
      //need to create a copy function here
    }

    private boolean isOver = false;
    private int turn;
    private int[][] map;
    public final int width, height;


}

1 Ответ

3 голосов
/ 09 октября 2011

Интерфейс Cloneable и метод clone() предназначены для создания копий объектов.Однако, чтобы сделать глубокое копирование, вам придется реализовать clone() самостоятельно:

public class Board {
    private boolean isOver = false;
    private int turn;
    private int[][] map;
    public final int width, height;
    @Override
    public Board clone() throws CloneNotSupportedException {
      return new Board(isOver, turn, map.clone(), width, height);
    }
    private Board(boolean isOver, int turn, int[][] map, int width, int height) {
      this.isOver = isOver;
      this.turn = turn;
      this.map = map;
      this.width = width;
      this.height = height;
    }
}
...