如何克隆对象 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
方法
我正在尝试创建一个 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
方法