Java对象数组深拷贝

来源:互联网 发布:centos 7 unmount 编辑:程序博客网 时间:2024/05/22 15:08

Java对象数组深复制

1.今天做项目的时候遇到了一个java数组深拷贝的问题,当时直接使用了Object对象的clone方法,结果不管用。

ArrayList<Cell> cells = ArrayList<Cell>();ArrayList<Cell> init_cells = new ArrayList<Cell>();init_cells = (ArrayList<Cell>) cells.clone();执行以下的测试代码:System.out.println(init_cells.get(0).name);cells.get(0).name = "aaaaaaaa";System.out.println(init_cells.get(0).name);

结果输出的结果是

c1aaaaaaa

对象数组深拷贝失败
解决方法:
1.将需要深拷贝的对象实现Cloneable接口
2.对对象数组中的每一个对象进行深拷贝

public static void deep_clone(ArrayList<Cell> clone_cells){    for(Cell c : cells){            clone_cells.add((Cell) c.clone());        }}deep_clone(init_cells);System.out.println(init_cells.get(0).name);cells.get(0).name = "aaaaaaaa";System.out.println(init_cells.get(0).name);

在Cell.java中实现Cloneable接口

public class Cell implements Cloneable {    public Object clone() {        Cell o = null;        try {            o = (Cell) super.clone();        } catch (CloneNotSupportedException e) {            e.printStackTrace();        }        return o;    }}

最后输出结果是:

c1c1
原创粉丝点击