在java/android中复制/克隆对象的最佳方法是什么?
rlBodyDataObj rlbo = bdoTable.get(name);
Run Code Online (Sandbox Code Playgroud)
现在代码从hashTable中分配一个对象,但我需要得到它的一个克隆,这样我就能多次使用它.
Dam*_*ian 21
确保您的DataObj类实现Cloneable并添加以下方法
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
Run Code Online (Sandbox Code Playgroud)
然后你应该能够调用(DataObj)rlBodyDataObj.clone(); 得到一个干净的副本(注意演员表).
Lol*_*ola 11
class Test implements Cloneable
{
...
public Object clone()
{
try
{
return super.clone();
}
catch( CloneNotSupportedException e )
{
return null;
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以实现Parcelable(易于使用Studio插件),然后
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;
}
Run Code Online (Sandbox Code Playgroud)