【发布时间】:2018-04-30 06:48:57
【问题描述】:
我已经苦苦挣扎了很长一段时间,并查看了一些资源,试图理解我如何使用泛型来获得我想要实现的目标,但我无法找到一个提供我想要实现的示例需要。
一些示例包括使用 Supplier 接口或建议使用泛型类然后实例化它。
我想要实现的是指定我希望方法返回的类型,同时在方法中实例化相同的类型并将其添加到列表中,然后返回该列表。
提前致谢。希望有任何帮助
public List<Doctor> queryDoctor() {
Statement statement = null;
ResultSet results;
try {
statement = connection.createStatement();
results = statement.executeQuery("SELECT * FROM " + TABLE_DOCTOR);
List<Doctor> doctors = new ArrayList<>();
while (results.next()) {
Doctor doctor = new Doctor();
doctor.setId(results.getInt(1));
doctor.setUserName(results.getString(2));
doctor.setPassword(results.getString(3));
doctor.setPassword_salt(results.getString(4));
doctor.setRole(results.getInt(5));
doctors.add(doctor);
}
return doctors;
} catch (SQLException e) {
System.out.println("Query failed: " + e.getMessage());
return null;
} finally {
try {
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
您需要传入
Function<ResultSet, T>,并让该函数创建T(例如Doctor)。 -
我个人更喜欢用这样的泛型方法编写一个抽象类,为每一行调用抽象方法(buildInstance)并为
Doctor实现一个类来创建实例并以正确的顺序获取参数.如果替代方案很有趣,我会提供答案。 -
@ThomasFlinkow 我正在尝试填充一个表格.. 而不是为每个演员(例如医生、护士、接待员)使用不同的方法,我想用一种方法来实现它,因为所有演员都共享相同的属性,而不是在运行时
-
你见过commons-dbutils的QueryRunner github.com/apache/commons-dbutils/blob/master/src/main/java/org/…
标签: java generics generic-list