在Java/Android中,最好的复制/克隆对象的方法是什么?
rlBodyDataObj rlbo = bdoTable.get(name);
目前代码从一个哈希表中分配了一个对象,但我需要获取它的克隆版本,以便能够多次使用。
确保您的 DataObj 类实现了 Cloneable 接口,并添加以下方法
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
然后您应该能够调用(DataObj)rlBodyDataObj.clone();来获取一个干净的副本(请注意转换)。
class Test implements Cloneable
{
...
public Object clone()
{
try
{
return super.clone();
}
catch( CloneNotSupportedException e )
{
return null;
}
}
...
}
public static <T extends Parcelable> T copy(T orig) {
Parcel p = Parcel.obtain();
orig.writeToParcel(p, 0);
p.setDataPosition(0);
T copy = null;
try {
copy = (T) orig.getClass().getDeclaredConstructor(new Class[]{Parcel.class}).newInstance(p);
} catch (Exception e) {
e.printStackTrace();
}
return copy;
}
class DataObj {
private String tag;
public DataObj(DataObj another) {
this.tag= another.tag; // you can access
...
}
}
每个对象都有一个克隆方法,可用于复制对象,但很容易创建类并使用不当的克隆方法。如果您要实现克隆方法,请至少阅读 Joshua Bloch 在 Effective Java 中的建议。
clone()
方法,它们是从Object
超类继承而来的。您可能需要覆盖此方法,以使其在您的自定义类中变得有用。 - Hunter McMillenclone()
。 - user207421