由于安卓sqlite的查询方法返回的是Cursor游标类型,想做个公共方法做个处理让它返回一个list,我该怎么把list里的T的具体类型取出来放到新list存sqlite查出的数据呢?求指导
现在的代码:
public static <T>List<T> dbRawQuery(SQLiteDatabase sd,String sql, String[] selectionArgs,List<T> list){
try {
if(DB_FILE.exists()){
DB_FILE.mkdirs();
cursor = sd.rawQuery(sql,selectionArgs);
}
if(cursor.moveToFirst()){//判断游标是否为空
StringBuilder tvData = new StringBuilder();
while (cursor.moveToNext()) {
for(int i=0;i<cursor.getColumnCount();i++){
}
}
cursor.close(); // 关闭游标,释放资源
}
}catch (Exception e){
String error = e.getMessage();
}
return list;
}
在参数里加一个Class clazz
采用这种思路去存储,如果里面返回的是一个 List 类型
result.add(supplier.get());
supplier.get() 等价于你从游标里面获取的值
public class Test2 {
public static <T> List<T> getValue(Supplier<T> supplier,int n){
List<T> result = new ArrayList<>();
for (int i=0;i<n;i++){
result.add(supplier.get());
}
return result;
}
public static Integer getInteger(){
return new Random().nextInt(100);
}
public static void main(String[] args) {
List<Integer> list = getValue(Test2::getInteger,10);
System.out.println(list);
}
}