java 对象的克隆
一、对象的浅克隆
(1)需要克隆类需要重写Object类的clone方法,并且实现Cloneable接口(标识接口,无需实现任何方法)
(2)当需要克隆的对象中维护着另外一个引用对象,浅克隆不会克隆另外一个引用对下,而是直接复制维护的另外一个引用对象的地址。
(3)对象的浅克隆也不会调用到构造方法。
以下为对象的浅克隆的一个例子:
package com.clone;import java.io.Serializable;public class CloneDemo1 implements Cloneable,Serializable{ //该克隆类封装的信息 public int id; public String name; public Address address; public CloneDemo1(){} public CloneDemo1(int id, String name, Address address){ this.id=id; this.name=name; this.address = address; } @Override public Object clone() throws CloneNotSupportedException{ return super.clone(); } @Override public String toString(){ return "id="+id+", name="+name+", address:"+address.getAddress(); } public static void main(String[] args) throws CloneNotSupportedException{ CloneDemo1 c1 = new CloneDemo1(1,"c1",new Address("北京")); //c2 复制了c1的地址,并没有复制整个c1对象 CloneDemo1 c2 = c1; //c3 对象的浅克隆,复制了整个对象 CloneDemo1 c3 = (CloneDemo1)c1.clone(); //当对象c1改变其name或者id的时候,c2也会自动改变。 //因为c2只是复制了c1的地址,并非复制了c1的整个对象。 //相应的c3则不会随着c1改变而改变,意味着c3将c1整个对象克隆一份出来。 //当是,对象的浅克隆不会克隆被克隆对象当中的引用对象。 //因此c1改变其中的Address的引用对象时,c2,c3也会跟着改变。 c1.setName("cc"); c1.address.setAddress("上海"); System.out.println(c1+"\n"+c2+"\n"+c3); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}class Address implements Serializable{ public String address; public Address(){} public Address(String address){ this.address = address; } //address的set和get方法 public String getAddress() { return address; } public void setAddress(String address) { this.address = address; }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机java 对象的克隆(浅克隆和深克隆)
后端开发2023-05-31
java深克隆与浅克隆有什么区别
后端开发2023-08-30
浅析Java中clone()方法浅克隆与深度克隆
后端开发2023-05-31
Cloneable接口的作用、深克隆与浅克隆是什么
后端开发2023-10-23
Cloneable接口的作用与深入理解深度克隆与浅度克隆
后端开发2023-09-13
vue对象的深度克隆方式
后端开发2024-04-02
浅谈克隆 JavaScript
后端开发2024-04-02
JAVA对象创建与对象克隆
后端开发2024-04-02
jQuery如何克隆对象
后端开发2024-04-02
java怎么实现对象克隆
后端开发2023-08-18
Java对象克隆怎么实现
后端开发2023-06-17
Java基础:对象的克隆(复制)
后端开发2023-09-26
java克隆对象的方法有哪些
后端开发2023-09-25
Java克隆对象的特性是什么
后端开发2023-06-17
咦!没有更多了?去看看其它编程学习网 内容吧