gpt4 book ai didi

java - 在 Java 中创建虚拟模板方法

转载 作者:搜寻专家 更新时间:2023-11-01 03:10:10 24 4
gpt4 key购买 nike

我试图创建的情况如下:

我有一个包含静态模板方法的基类,该方法接收由数据库中的查询填充的 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;
}
}

我得到的错误是:无法实例化类型 T

我很清楚,编译器有必要“知道”所有子类都将实现接收 ResultSet 变量的构造函数,但我无法创建“抽象构造函数”。

有没有人知道如何解决这个问题?

提前谢谢大家。

最佳答案

您不能实例化通用类型。

你可以使用任一工厂

 public static <T extends TableBase> List<T> getResults
(ResultSet p_Rs, Factory<T> factory)

//Create instance using factory

或类作为类型。

public static <T extends TableBase> List<T> getResults
(ResultSet p_Rs, Class<T> type)
//type.newInstance()

关于java - 在 Java 中创建虚拟模板方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12613252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com