猿问
克隆()vs复制构造函数-这是java中推荐的构造函数。
在java中克隆方法与复制构造函数。哪一个是正确的解决方案。每个案例在哪里使用?
繁星coding
浏览 321
回答 3
3回答
人到中年有点甜
记住clone()不是从盒子里出来的。你必须实现Cloneable并覆盖clone()方法制作public.有几种选择比较可取(因为clone()方法存在许多设计问题,如其他答案所述),复制构造函数需要手工操作:BeanUtils.cloneBean(original)创建一个浅克隆,就像由Object.clone()..(这堂课是从公豆)SerializationUtils.clone(original)创造了一个深克隆体。(也就是说,整个属性图被克隆,而不仅仅是第一级)(从公朗),但是所有类都必须实现SerializableJava深度克隆库提供深度克隆,而不需要实现Serializable
0
0
0
慕慕森
克隆()的设计有几个错误(参见这个问题),所以最好避免它。从…有效Java第二版,第11项:明智地覆盖克隆考虑到与cloneable相关的所有问题,可以肯定地说,其他接口不应该扩展它,为继承而设计的类(项目17)不应该实现它。由于它的许多缺点,一些专业的程序员只是选择永远不覆盖克隆方法,从来不调用它,也许,除了复制数组。如果为继承设计类,请注意,如果选择不提供行为良好的受保护的克隆方法,子类不可能实现cloneable。本书还描述了复制构造器相对于克隆/克隆具有的许多优点。他们不依赖于一种易受风险的语言外对象创建机制。它们并不要求对文件很少的公约进行强制执行。它们与最终字段的正确使用没有冲突它们不会抛出不必要的检查异常他们不需要石膏。所有标准集合都有副本构造函数。用它们。List<Double> original = // some listList<Double> copy = new ArrayList<Double>(original);
0
0
0
随时随地看视频
慕课网APP
相关分类
Java
我要回答