本篇为《Effective Java》读书笔记系列03(多图预警!)。
笔记
补充
条目13
再一次提到了前面关于clone()的内容,放代码以窥之:
|
|
从这段代码输出为7,可以看出:1.第三行克隆语句不需要强制转换;2.Apple并不需要实现Cloneable接口;3.当深层次修改数组a(也就是修改数组a中索引为0的元素内引用的Orange对象的成员变量a),克隆数组b中的相应数据仍然更改了。也就是单纯的clone仍然是浅拷贝。看下面代码:
|
|
第一行输出为7,第二行输出为3。也就是避免了长度非零的数组可变所带来的安全漏洞。