One*_*rld 8 java instances cloning
克隆这种情况下的良好做法?怎么做得更好?
public ModelCollection startParsing() {
return parseFeed(new ModelSpecialEntry);
}
public ModelCollection parseFeed(ModelEntry pattern) {
ModelCollection modelCollection = new ModelCollection();
while( condition ) {
//TODO: Is cloning the best solution?
ModelEntry model = (ModelEntry) pattern.clone();
model.parse();
//add this item to an collection
modelCollection.add(model);
}
return modelCollection;
}
Run Code Online (Sandbox Code Playgroud)
Viv*_*sse 10
克隆在Java中很少是一个好主意.尝试其他技术,如复制构造函数或工厂方法.
维基百科有一篇很好的文章,说明为什么clone()Java有许多缺点.
使用复制构造函数,创建一个构造函数,该构造函数将当前类的实例作为参数,并复制本地类中的所有字段:
public class Foo {
private String bar;
private String baz;
public Foo(Foo other) {
this.bar = other.bar;
this.baz = other.baz;
}
}
Run Code Online (Sandbox Code Playgroud)
使用工厂方法,创建一个方法,将对象作为参数并返回包含相同值的对象:
public Foo copyFoo(Foo other) {
Foo foo = new Foo();
foo.setBar(other.getBar());
foo.setBaz(other.getBaz());
}
Run Code Online (Sandbox Code Playgroud)
小智 1
我认为,这就像编程中的其他一切一样:它取决于对象规范。
尝试进行一个非常快速的测试:克隆 100000 个对象并实例化相同数量的对象,然后检查需要多长时间 (System.currentTimeInMilis())。通常克隆速度更快。
请记住,克隆有一个问题 - 添加新字段等时,您也需要修改 clone() 方法。
| 归档时间: |
|
| 查看次数: |
8413 次 |
| 最近记录: |