我正在尝试使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;
}
答案 0 :(得分:0)
您是否实施了Cloneable接口?
答案 1 :(得分:0)
您必须在类上指定它实现Cloneable接口,并且必须覆盖该类中的clone
方法。默认情况下,它将使用clone
类的Object
方法。