Java里面的对象克隆
java里面的对象克隆:实际存在的对象拷贝几份!
即将一个实际的对象进行多份拷贝
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
package xsocket.server;
public class Test implements Cloneable {
private String name;
public void setName(String arg) {
this.name = arg;
}
public String getName() {
return this.name;
}
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
public static void main(String args) throws CloneNotSupportedException {
Test shepp = new Test();
shepp.setName("first");
System.out.println(shepp.getName());
Test sheppclone = (Test)shepp.clone(); //对象拷出来一份副本
System.out.println(sheppclone.getName());
System.out.println("shepp sheppclose" + (shepp sheppclone));
}
}
要知道 表示的是同一份对象。这里面的内存位置是不一样的哦。所以就不一样了!
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
package xsocket.server;
public class Test implements Cloneable {
private String name;
public void setName(String arg) {
this.name = arg;
}
public String getName() {
return this.name;
}
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
public static void main(String args) throws CloneNotSupportedException {
Test shepp = new Test();
shepp.setName("first");
Test shepp2 = shepp; //只是将两个值指向了同一个对象了所以会相互影响到对方的值!
System.out.println(shepp2.getName());
Test shepp3 = (Test)shepp.clone();//再做一个实际的副本出来就不会相互影响的!
shepp3.setName("another");
System.out.println(shepp3.getName());
System.out.println(shepp.getName());
}
}
输出:
first
another
first
(这就是拷贝的好处了!)
要考虑一下什么时候用浅clone什么时候用深clone
:
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|