如何克隆对象java

时间:2015-02-18 09:01:53

标签: java android entity-framework sqlite

我正在尝试使DBManager允许连接到数据库,所以这是上下文。

我有一个abstract class Entitie,它具有DB中每个权限的结构,在这种情况下,重要的事情是表名,id和抽象方法(setContentValues)来自Cursor的值并将它们放在变量中(该方法是抽象的,因为变量的变化取决于什么是权利)。

在DBManager中我有一个方法getAll,我传递一个只有id的dummyEntitie,显然,默认情况下,该类具有表名。

所以我尝试构建一个与该方法接收的相同类权限的arraylist。 所以,我有想法,克隆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;
}

2 个答案:

答案 0 :(得分:0)

您是否实施了Cloneable接口?

答案 1 :(得分:0)

您必须在类上指定它实现Cloneable接口,并且必须覆盖该类中的clone方法。默认情况下,它将使用clone类的Object方法。