当我们想为某个类创建新对象时,如果我们已经有了一个,我们应该使用clone()还是使用new关键字实例化?
是的,clone()也会复制所有成员,但我很好奇这个无关紧要的情况.
ClassType foo = new ClassType(); ClassType bar = new ClassType(); // here, will foo.clone() be better choice?
我在目前的任务中需要这个,因为我正在使用通用列表(列表<
T >
),它有时会变得很大并且在实际用于UI之前通过'n'层.(它们之间转换为数组并返回列表以及序列化目的).所以,我只是想提高性能.
Clone()
new
无论如何都会这样做,为什么要这么麻烦?
Clone()
无论如何,调用将导致新的引用,并且所有成员都被复制,因此它肯定会更慢.
听起来你在做过早的优化.简介,您通常会在时间进展中感到惊讶.我怀疑它会在这里,除非你的"克隆"使用序列化.
那说; ICloneable.Clone()
值得避免的原因很简单,因为它定义不清楚(深度与浅度)并且很少得到支持.在幕后,大多数Clone()
实现要么只做一个new(); // now copy properties
,要么使用序列化.