是。
新对象的成员值与原对象的值保持一致,且相互独立,即修改其中一个不会影响到其他的。
public class CloneDemo {
public static void main(String[] args) {
List<Foo> list = new ArrayList<>();
Foo foo = new Foo();
foo.setBar(2);
for (int i = 0; i < 5; i++) {
Foo clone = (Foo) foo.clone();
clone.setBar(clone.getBar() + i);
list.add(clone);
}
System.out.println(list);
}
static class Foo implements Cloneable{
private int bar;
public void setBar(int bar) {
this.bar = bar;
}
public int getBar() {
return bar;
}
@Override
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return null;
}
@Override
public String toString() {
return "Foo{" +
"bar=" + bar +
'}';
}
}
}
执行结果
[Foo{bar=2}, Foo{bar=3}, Foo{bar=4}, Foo{bar=5}, Foo{bar=6}]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)