java中克隆研究
来源:互联网 发布:照片合成软件 编辑:程序博客网 时间:2024/05/17 09:28
实现克隆的步骤
- 让类实现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; }}
克隆的使用场景
- 比如一个对象的初始化复杂,你需要得到一份相似的对象,使用克隆,将会是一个不错的选择。
- 克隆在对数组的复制也是十分方便的,可以直接使用。
0 0
- java中克隆研究
- java 中克隆对象
- Java中克隆机制
- java 中浅克隆与深克隆
- 对Java克隆方法的研究(一)
- Java克隆方法的研究(clone)
- 对Java克隆方法的研究(一)
- 对Java克隆方法的研究(二)
- 对Java克隆方法的研究(三)
- Java中对象的克隆
- Java中 对象克隆实例
- java中对象的克隆
- Java中数组的克隆
- Java中深克隆与浅克隆的简单理解
- Java中对象的深克隆和浅克隆
- Java中对象的深克隆和浅克隆介绍
- (转)Java克隆方法的研究(clone)
- java中的clone()方法的研究---(2)浅克隆和深克隆
- 自定义MyListView,解决与ScrollView滑动冲突
- Android studio ,新建项目相关介绍
- 35-001-4 Struts中的表单数据输入的验证问题
- the environment variable java_home does not point to a valid JVM installation.
- acm 3 1006 数塔
- java中克隆研究
- 关于CoreImage人脸检测
- Test
- Android获取内存卡MP3信息
- 2014 amazon 在线 面试题目 爬山问题:打印出从A点到B点的距离
- ViewPager+Animation简单示例
- Cookie
- LeetCode 281. Zigzag Iterator
- 有感