复制构造函数v.实现Cloneable接口

mre*_*mre 5 java deep-copy copy-constructor cloneable

就"最佳实践"而言,哪种方法适用于创建对象的"深层复制"?

Mat*_*all 14

使用复制构造函数.Cloneable是一场直接的API灾难.请参阅Effective Java Item 10(第2版​​的第11项).

第11项:clone明智地改写

Cloneable接口旨在作为mixin接口(项目18),用于对象进行广告,允许克隆.不幸的是,它没有达到这个目的.它的主要缺陷是,它缺乏一个clone方法,和Objectclone方法是受保护的.如果不采用反射(第53项),clone就不能仅仅因为它实现而在对象上调用方法Cloneable.即使是反射调用也可能失败,因为无法保证对象具有可访问的clone方法.