【发布时间】:2012-09-18 18:13:13
【问题描述】:
我试图创造的情况如下:
我有一个包含静态模板方法的基类,该方法接收由数据库中的查询填充的ResultSet,并返回一个包含正确结果的列表。
我有一些派生自上面引用的类,它们代表数据库中的每个表,并且它们都有一个构造函数,它接收ResultSet 并构建对象。
我写的代码是:
public class TableBase
{
public static <T extends TableBase> List<T> getResults(ResultSet p_Rs) throws SQLException, InstantiationException, IllegalAccessException
{
List<T> v_Table = new ArrayList<T>();
T v_TB = null;
while(p_Rs.next())
v_Table.add(new T(p_Rs));
return v_Table;
}
}
我得到的错误是:Cannot instantiate the type T。
我很清楚,编译器有必要“知道”所有子类都将实现接收ResultSet 变量的构造函数,但我无法创建“抽象构造函数”。
有人知道如何解决这个问题吗?
提前谢谢大家。
【问题讨论】:
-
你必须向函数传递一些知道
T的对象。也许某种工厂对象
标签: java templates virtual resultset