【发布时间】:2015-10-10 00:21:16
【问题描述】:
我有一个 Course 类,它有各种类型的字段,以及它们各自的 getter 和 setter,例如:
float percentage
char courseLevel
String courseName
boolean takingNow
然后我有一个包含课程对象和方法的 ArrayList:
public <T> ArrayList<Course> getCourses(int parameterId, T value) {
ArrayList<Course> res = new ArrayList<Course>();
switch(parameterId) {
case COURSE_NAME:
for(Course c: courseList) {
if(c.getCourseName().equals(value) {
res.add(c)
}
}
break;
....
//rest of the cases
....
}
return res
}
该方法然后遍历课程的ArrayList并根据parameterId比较某个字段,如果课程字段等于传递的值,则将其添加到要返回的arraylist中。
有没有比以这种方式使用泛型更好的方法来做到这一点,我觉得这是一种非常糟糕的编码习惯。
【问题讨论】:
-
更好的方法是使用数据库。
-
数据存储不是问题,检查的逻辑是问题。也就是说,您正在尝试对列表执行您应该对数据库执行的操作...
-
@AnubianNoob 我这样做的方式是将数据库中的所有课程加载到课程的 ArrayList 中。我不应该这样做吗?
-
“有没有比这样使用泛型更好的方法” 是的。如前所述,使用数据库。
-
@AndrewDelgadillo 您可以直接轮询数据库。或者有一个比 ArrayList 更好的包装器。