克隆
来源:互联网 发布:淘宝开店时长 编辑:程序博客网 时间:2024/04/28 14:12
java的克隆实现方式有两种一种是实现cloneable接口并重写Object的clone()方法,另外一种是实现serializable接口;
克隆有分为浅度克隆和深度克隆。浅克隆对象的成员变量是引用类型,复制的是地址给克隆对象,是值类型,复制是内容。深度克隆无论对象的成员变量是值类型还是引用类型,内容都复制给克隆对象。假如要克隆的类A中有一个引用类型的变量b时,当重写A对象的clone方法时,把B对象的克隆方法返回的对象赋值给A对象的成员变量b。代码如下:
protected Object clone(){ Student stu=null; try { stu=(Student)super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } stu.add=(Address)add.clone(); return stu;}
用实现cloneable实现深度克隆也有些局限性,如果对象中有引用类型,引用类型里面又有引用类型,这样用实现cloneable接口来实现克隆就比较麻烦了。
用实现serializable同样可以实现深度克隆。将要克隆的对象实现serializable接口,并写个方法返回对象。方法代码如下:
public Outer myclone() { Outer out=null; try { ByteArrayOutputStream bos=new ByteArrayOutputStream(); ObjectOutputStream oos=new ObjectOutputStream(bos); oos.writeObject(this); ByteArrayInputStream bis=new ByteArrayInputStream(bos.toByteArray()); ObjectInputStream ob=new ObjectInputStream(bis); out=(Outer)ob.readObject(); }catch(Exception e) { e.printStackTrace(); } return out; }
此方法通过序列化,反序列的方式实现克隆对象。
阅读全文
0 0
- 克隆
- 克隆
- 克隆
- 克隆
- 克隆
- 克隆
- 克隆
- 浅克隆、深克隆
- 深克隆,浅克隆
- 克隆 MAC
- 克隆数据库
- 深度克隆
- 网络克隆
- java 克隆
- 克隆表达式
- 对象克隆
- 关于克隆
- 克隆代码
- Python的一些函数用法,学到后在此更新
- hadoop集群安装 7节点;HA
- 基于决策树的分类
- 19-Remove Nth node from end list
- Java
- 克隆
- GNOME frontend for the rdesktop client (從ubuntu遠端桌面windows)
- FTP(1):Windows 10搭建Ftp
- 【git】ubuntu安装git
- 微信小程序 --- 不在以下合法域名列表中请参考文档
- Java连接redis异常
- 网易2017春招 堆砖块(dp+滚动数组)
- 冒泡排序
- maven项目端口占用