虽然前面学习设计模式的时候已经接触到了深浅拷贝的问题,但是今天想起来的时候,突然就忘记了,再来记录一下。
问题就是,对clone之后的对象进行修改,原对象是否会被修改的问题。
假设有一个对象是area,里面有一些点是point。
Area a=new Area();
a.setNo(1);
List<Point> ps=new ArrayList<Point>();
Point p1=new Point();
p1.setName("北京");
Point p2=new Point();
p2.setName("上海");
ps.add(p1); ps.add(p2);
a.setPoint(ps);
b=a.clone();
b.setNo(2);
b.getPoints.remove(1);
System.out.print("a的编号是:%d",a.getNo());
for(int i=0;i<a.getPoint().size();i++)
System.out.print("点的名称是:%s",a.getPoint.get(i).getName());
===========>
输出的结果是:
1 上海
=============》结论
clone方法,对普通的值的copy,是会复制一份一模一样的值,改变该值,对原来的对象没有任何影响
对对象变量的copy,是采用引用的方式,是浅copy,改变了对象的属性,会原来的也会受到影响。