【发布时间】:2016-10-25 08:55:20
【问题描述】:
在这里,我遇到了这个一般性问题。我想实现一种能够在我的 android SQLite 数据库中选择所有项目的方法,同时遵守以下限制。
- 应该是通用的;
- 应该易于使用;
我在这里,让我尽我所能:
public <T extends GenericnessFactory<T>> List<T> selectAll(T returningClass){
List<T> objects = new ArrayList<T>();
String name = returningClass.getClass().getSimpleName();
Field[] fields = returningClass.getClass().getFields();
String[] columns = new String[fields.length];
for(int i = 0; i < fields.length; i++){
columns[i] = fields[i].getName();
}
SQLiteDatabase readable = getReadableDatabase();
Cursor c = readable.query(name, columns, null,null, null, null, null);
if(c.moveToFirst()){
T item = returningClass.generate();
}
c.close();
return objects;
}
我正在考虑将类名作为表名,将字段作为列,但现在我觉得很棘手,因为一旦 T 是泛型,我如何将光标绑定到泛型类型?
只是为了知识,这里是我的GenericnessFactory界面:
public interface GenericnessFactory<T> {
public T generate();
}
任何解决方案都会让我高兴,但如果你能解释一下,我会很高兴理解你的解决方案。
【问题讨论】:
标签: java android sqlite generics