如何克隆对象 java

how to clone an object java

我正在尝试创建一个 DBManager 以允许连接到数据库,所以这里是上下文。

我有一个 abstract class Entitie,它具有数据库中每个实体的结构,在这种情况下重要的是 table 名称、id 和抽象方法(setContentValues) 从 Cursor 获取值并将它们放入变量中(该方法是抽象的,因为变量的变化取决于实体是什么)。

在 DBManager 中,我有一个方法 getAll,我传递了一个只有 ID 的 dummyEntitie,显然,class 默认情况下具有 table 名称。

所以我尝试构建一个 arraylist 该方法接收的相同 class 实体。 所以,我有了想法,克隆 dummyEntitie,调用 setContentValues,并将其添加到 arraylist。 但是每次我尝试调用方法.clone时,我都会在IDE上出错,所以我不知道出了什么问题,也不知道如何克隆对象。

代码如下:

public ArrayList<Entitie> getAll(Entitie dummyEntitie){
    ArrayList<Entitie> entities = new ArrayList<Entitie>();

    String selectQuery = "SELECT  * FROM " + dummyEntitie.getTableName(); // Select All Query

    db = getWritableDb();

    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            try {
                dummyEntitie = dummyEntitie.clone();
            } catch (Exception e) {
                e.printStackTrace();
            }
            dummyEntitie.setID(Integer.parseInt(cursor.getString(0)));
            dummyEntitie.setContentValues(cursor);
            entities.add(dummyEntitie);
        } while (cursor.moveToNext());
    }

    // return contact list
    return entities;
}

你实现了Cloneable接口了吗?

您必须在 class 上指定它实现 Cloneable 接口,并且您必须重写 class 中的 clone 方法。默认情况下,它将使用 Object class.

clone 方法