美文网首页
Java对象克隆

Java对象克隆

作者: 星空下奔跑 | 来源:发表于2018-04-01 11:33 被阅读0次

    在Java中数据类型分为值(基本数据类型)类型和引用类型。深克隆和浅克隆的重要区别在于是否支持引用类型(数组、类、接口等复杂类型)的成员变量的复制。

    浅克隆(ShallowClone)

    被Clone的类实现Clonenable接口,然后覆写clone()方法,得到clone的对象。

    深克隆

    在深克隆中,无论成员变量是值类型还是引用类型都会复制一份给克隆对象。

    通过Clonenable接口

    若被Clone的类中存在引用类型的成员变量,那么这个变量也需要实现Clonenalbe接口,并在被clone类的clone方法中调用成员变量类的clone方法。
    若类中存在很多引用类型的成员变量,那么实现深克隆将非常麻烦。

    通过序列化(Serialization)

    通过将对象序列化写到流中,再通过反序列化从流中读出对象,可实现深克隆。
    但引用类型的成员变量也必须实现Serializable接口。

    基于序列化和反序列化实现的克隆不仅仅是深度克隆,更重要的时通过泛型限定,可以检查除要克隆的对象是否支持序列化,可以由编译器完成。

    相关文章

      网友评论

          本文标题:Java对象克隆

          本文链接:https://www.haomeiwen.com/subject/capocftx.html