Cloneable 接口实现原理

Cloneable接口是Java开发中常用的一个接口, 它的作用是使一个类的实例能够将自身拷贝到另一个新的实例中,注意,这里所说的“拷贝”拷的是对象实例,而不是类的定义,进一步说,拷贝的是一个类的实例中各字段的值。

在开发过程中,拷贝实例是常见的一种操作,如果一个类中的字段较多,而我们又采用在客户端中逐字段复制的方法进行拷贝操作的话,将不可避免的造成客户端代码繁杂冗长,而且也无法对类中的私有成员进行复制,而如果让需要具备拷贝功能的类实现Cloneable接口,并重写clone()方法,就可以通过调用clone()方法的方式简洁地实现实例拷贝功能。

深拷贝(深复制)和浅拷贝(浅复制)是两个比较通用的概念,尤其在C++语言中,若不弄懂,则会在delete的时候出问题,但是我们在这幸好用的是Java。虽然Java自动管理对象的回收,但对于深拷贝(深复制)和浅拷贝(浅复制),我们还是要给予足够的重视,因为有时这两个概念往往会给我们带来不小的困惑。

浅拷贝是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象。深拷贝不仅拷贝对象本身,而且拷贝对象包含的引用指向的所有对象。举例来说更加清楚:对象 A1 中包含对 B1 的引用, B1 中包含对 C1 的引用。浅拷贝 A1 得到 A2 , A2 中依然包含对 B1 的引用, B1 中依然包含对 C1 的引用。

深拷贝则是对浅拷贝的递归,深拷贝 A1 得到 A2 , A2 中包含对 B2 ( B1 的 copy )的引用, B2 中包含对 C2 ( C1 的 copy )的引用。https://www.jianshu.com/p/c9d7a65451fc
https://www.jianshu.com/p/08b38d4fdf08
https://www.jianshu.com/p/21a41ef5677b
https://www.jianshu.com/p/0b36275a242a
https://www.jianshu.com/p/b3035cc157fa
https://www.jianshu.com/p/9120292fe000
https://www.jianshu.com/p/7d5a68c8ec9a
https://www.jianshu.com/p/d622e3aea9e1
https://www.jianshu.com/p/b6c090fbf3c7
https://www.jianshu.com/p/e55a66b72ab0
https://www.jianshu.com/p/1360e0a04926
https://www.jianshu.com/p/ad9ecb05c278
https://www.jianshu.com/p/14b2d8d25a13
https://www.jianshu.com/p/399d150aa640
https://www.jianshu.com/p/06c695065f39
https://www.jianshu.com/p/898743752411
https://www.jianshu.com/p/353df67af811
https://www.jianshu.com/p/50c50ba122f5
https://www.jianshu.com/p/d80e3ad1742c
https://www.jianshu.com/p/30126d7d0751
https://www.jianshu.com/p/42a52d1438a0
https://www.jianshu.com/p/923c922eef6f
https://www.jianshu.com/p/562971730827
https://www.jianshu.com/p/76b829a7b395
https://www.jianshu.com/p/103e42866da2
https://www.jianshu.com/p/a7559ff49e46
https://www.jianshu.com/p/68ad8ae403da
https://www.jianshu.com/p/955240b70de7
https://www.jianshu.com/p/5899d1f9d29a
https://www.jianshu.com/p/b60e0a550b6d
https://www.jianshu.com/p/fee6843699be
https://www.jianshu.com/p/9ed69777b56a
https://www.jianshu.com/p/608d9d12d0e5
https://www.jianshu.com/p/36dbb4855f0b
https://www.jianshu.com/p/5b078d5f383a
https://www.jianshu.com/p/814f70b753b9
https://www.jianshu.com/p/2704d6101780
https://www.jianshu.com/p/f67f82fb45a7
https://www.jianshu.com/p/9948c02f0b38
https://www.jianshu.com/p/e3d41231eb33
https://www.jianshu.com/p/c6c10c21a6b6
https://www.jianshu.com/p/169e132458c7
https://www.jianshu.com/p/76ba476104bb
https://www.jianshu.com/p/b81e72d3feff
https://www.jianshu.com/p/2a8b8c4a10a7
https://www.jianshu.com/p/bcc4b966a2f5
https://www.jianshu.com/p/c73890c5d4e0
https://www.jianshu.com/p/e348c09f12d2
https://www.jianshu.com/p/df06999ec7df
https://www.jianshu.com/p/c654d9d1abef
https://www.jianshu.com/p/578f5deedf16
https://www.jianshu.com/p/d94fa389cd35
https://www.jianshu.com/p/23f730e63a68
https://www.jianshu.com/p/f3b1b7a1d7a4
https://www.jianshu.com/p/9735fe514f1f
https://www.jianshu.com/p/c3106bb78115

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值