复制构造函数:特例

时间:2014-04-15 13:31:05

标签: java constructor copy clone

所以我需要为方法复制一个实例,并且必须返回一个实例。

我的问题是这个对象包含一个数组,并且还需要复制这个数组中的所有内容。

类构造函数只指定2d数组的宽度和高度,并且不能更改此类构造函数。

如何创建副本?以下我认为它不会起作用,因为它只复制数组的大小吗?

public Grid copyGrid (Grid grid) {
        return new Grid(height, width);
    }

2 个答案:

答案 0 :(得分:1)

您需要确保可以访问Grid对象的所有数据(即getter和setter可用)。根据您拥有的方法类型,您的代码可能如下所示。

public Grid copyGrid(Grid grid) {
    Grid g = new Grid(grid.getHeight(), grid.getWidth());

    for (int row = 0; row < height; row++) {
        for (int col = 0; col < width; col++) {
            g.setValue(row, col, grid.getValue(row, col));
    }
    return g;
}

假设您可以在网格中获取和设置单个值。

答案 1 :(得分:0)

您需要自己复制元素。

public Grid copyGrid (Grid grid) {
  Grid newGrid = new Grid(height, width);
  for (int row = 0; row < height; row++) {
    for (int col = 0; col < width; col++) {
      newGrid.getArray()[row][col] = grid.getArray()[row][col];
    }
  }
  return newGrid;
}