【发布时间】:2014-02-21 10:27:02
【问题描述】:
我正在尝试使用泛型修改我的代码以避免所有重复代码。
我有一个类 DBBaseClass,它将被其他类扩展。我正在尝试创建一个 getAll 方法,该方法返回存储在数据库中的子类的所有对象。
class abstract DBBaseClass {
abstract readDataBase(int _id);
public <T extends DBBaseClass> List<T> getAll()
{
List<T> array = new ArrayList<T>();
ArrayList<Integer> myints = DBManager.request_database_for_ids(getIdField(), getTableName());
T myTObject = new T(); // NOT WORKING *************************
for (int i=0;i<myints.size();i++) {
myTObject.read(myints.get(i));
array.add(myTObject);
}
return array;
我有错误: - 无法实例化类型 T - 类型 T 不是通用的;它不能被参数化 论据
如何在这里实例化我的 T 子类?
有什么诀窍??
谢谢。
编辑:
更详细地解释我的目标: 我有两个扩展 DBBaseClass 的类 SUbClassA 和 SubClassB。
我想要一个方法: SubClassA.getAll() 返回 SUBClassA 对象的数组列表。 SubClassB.getAll() 返回一个 SUbClassB 对象的数组列表。
起初,我在我的所有子类中创建了 getAll...所以,我现在尝试将此 getAll() 放入 DBBaseclass。
如果我希望他们返回 List,这很容易做到,但我不知道如何告诉方法“向我返回这种特定类型子类的列表”。
【问题讨论】:
-
您希望 DBBase 类包含自身的实例吗?这对我来说看起来很奇怪。请解释一下,就像我们是 9 岁的孩子一样,您想要实现什么。