如何克隆android中的对象?

Rog*_*vis 19 java android

在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)