java中克隆研究
2016-05-14 12:11
411 查看
实现克隆的步骤
让类实现Cloneable接口重写clone方法为public,并调用super.clone()
代码示例
public class People implements Cloneable { private int age; private String name; public People(int age, String name) { super(); this.age = age; this.name = name; } public People() { super(); } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } }
调用
public class Test { public static void main(String[] args) throws CloneNotSupportedException { People people = new People(11, "zzh"); People copy = (People) people.clone(); System.out.println(copy.getAge()); } }
这是一个浅克隆,如果对象中含有引用其他对象的属性,克隆后引用也将指向同一个对象,深克隆需要自己在clone()方法中实现,例如
public class People implements Cloneable { private int age; private String name; private Phone phone; public People(int age, String name) { super(); this.age = age; this.name = name; } public People() { super(); } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Phone getPhone() { return phone; } public void setPhone(Phone phone) { this.phone = phone; } @Override public People clone() throws CloneNotSupportedException { People p = null; p = (People) super.clone(); p.phone = (Phone) phone.clone(); return p; } }
克隆的使用场景
比如一个对象的初始化复杂,你需要得到一份相似的对象,使用克隆,将会是一个不错的选择。克隆在对数组的复制也是十分方便的,可以直接使用。
相关文章推荐
- jquery的clone方法应用于textarea和select的bug修复
- JavaScript深度复制(deep clone)的实现方法
- Javascript对象Clone实例分析
- Java利用序列化实现对象深度clone的方法
- ubuntu下会话克隆
- windows image/vhd 相关
- vm 克隆linux系统后,网卡无法正常工作
- VM虚拟机克隆linux后网卡无法启动解决办法
- Vmware克隆Centos 6.4后 重新设置eth0
- Java - 复制ArrayList
- 简单快速的上手使用gitbash
- C#浅复制和深复制
- clone
- JAVA笔记【20131213】
- 关于java对象复制(clone)
- Clone KVM with virt-clone
- 使用GIT期间遇到的问题(持续更新)
- vmware clone后,修改的地方
- git RPC failed;result=18
- Cloneable