JAVA clone
来源:互联网 发布:广东干部教育培训网络 编辑:程序博客网 时间:2024/06/04 19:44
1. 浅Clone
实现Cloneable接口,重写Clone方法
public Object Clone() {
Objcet o = null;
try{
o = super.clone();
}catch(Exception e){
e.printStackTrace();
}
return o;
}
这是浅Clone,如果当前类中有复杂对象,如集合、数组等只能Clone这些复杂对象的引用,也就是说clone后的实例中的复杂对象与原实例中复杂对象指向同一块内存,修改clone后的对象会修改原实例
2. 深Clone,如果clone对象中有 集合、数组等复杂对象要一一复制
String[] strArray = new String[20];
List list = new ArrayList();
list.add(1);
public Object Clone() {
Objcet o = null;
try{
o = super.clone();
//clone list
o.list = new ArrayList();
for(int i = 0; i < list.size(); i++){
o.list.add(list.get(i));
}
//clone array
o.strArray = (String)strArray.clone();
}catch(Exception e){
e.printStackTrace();
}
return o;
}
对于多级的List 或者Vectory上面的深Clone很麻烦,可能使用序列化的方法,实现serializable接口
public Object deepClone() {
Objcet o= null;
try{
ByteArrayOutputStream b = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(b);
out.writeObject(this);
ByteArrayInputStream bin = new ByteArrayInputStream(b.toByteArray());
ObjectInputStream in = new ObjectInputStream(bin);
o= in.readObject();
}catch(Exception e) {
e.printStackTrace();
}
return o;
}
- java clone
- java clone
- java clone
- java clone
- java clone
- Java clone
- Java clone
- Java Clone
- java clone
- JAVA clone
- Java clone
- Java Clone
- java clone
- Java clone
- 【Java】clone()
- Java Clone
- java clone
- Java clone()
- 路由器配置命令(汇总)
- C#远程开机代码
- 表单项不可编辑
- 7年嵌入式内核驱动工作,把这些年读过还不错的书籍推荐给大家发表于 : 2010-09-03 0:02
- u-boot代码分析
- JAVA clone
- linq to Dataset
- HTML计时器
- 彻底解密C++宽字符:4、利用codecvt和use_facet转换
- jQuery插件
- 实验: git 如果.gitignore中添加一个已经跟踪的文件结果是?
- java新输入/输出(nio)记录
- WinCE数据通讯之Web Service篇
- htonl() htons()及inet_ntoa() inet_addr()的用法