我有一个超类DBAdapter
,它有方法fetchAll()
,它从数据库表中选择所有记录到List<DBObject>
。我已使用CategoryDBAdapter
继承此类,此类知道从Category
扩展的类DBObject
。
我打电话的时候:
CategoryDBAdapter categoryDbAdapter = new CategoryDBAdapter(dbHelper);
List<Category> categories = categoryDbAdapter.fetchAll();
我的代码无法将List<DBObject>
投射到List<Category>
。解决此冲突的常用方法是什么?
答案 0 :(得分:2)
您可以更改DBAdapter和DBCategoryAdapter类以使用泛型:
class DBAdapter<T extends DBObject> {
List<T> fetchAll() {
...
}
}
class DBCategoryAdapter extends DBAdapter<Category> {
}
您还需要调整fetchAll()方法的内容,这取决于您的实现有多容易。
答案 1 :(得分:0)
我认为没有任何直接的方法。您需要为Category
元素(List<Category> categoryList
)创建一个新列表,迭代DBObject
返回的列表1}}元素(List<DBObject> dbOjectsList
),强制转换元素(Category category = (Category) dbObject;
)并添加到类别元素的新列表列表(categoryList.add(category);
)。