作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用泛型修改我的代码以避免所有重复的代码。
我有一个 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,很容易做到,但我不知道如何告诉方法“返回我这种特定类型子类的列表”。
最佳答案
您想要使 DBBaseClass 通用,因为这样声明它:
abstract class DBBaseClass<T extends DBBaseClass<?>>
关于java、泛型和 getAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21931692/
我是一名优秀的程序员,十分优秀!