现在我一直坚持这个问题一段时间了,并且想知道是否有人可以提供帮助。我已经制作了一个Java GUI(大学生最后一年的模块选择器),我只能得到一点工作。
背景:添加新模块和课程应该很容易,所以我试图避免硬编码。现在我要做的就是让程序根据路线导入某些模块。它非常微不足道,我可以让它以肮脏的方式工作,但不是我想要的方式。
if(course.getCourseName() == "Computer Science") {
select.setModules(courses[0].getModulesOnCourse());
} else if(course.getCourseName() == "Software Engineering") {
select.setModules(courses[1].getModulesOnCourse());
}
现在这种方式有效,但它的编码水平很难达到1000级。我希望它的工作方式是以下两种方式之一:
courses.forEach(c -> {if(c.equals(course)){select.setModules(c.getModulesOnCourse())}});
OR
for(Course c : courses) {
if(c.equals(course)) {select.setModules(c.getModulesOnCourse());}
}
现在他们理论上应该完美地工作,但两者都没有。我只是想知道是否有人可以帮助我理解为什么,也许可以提供解决方案。为方便起见,我将附上以下所有文件的要点。
答案 0 :(得分:1)
将==
与String
等对象一起使用绝对不是一个好主意。始终使用.equals
。
如果您将.equals
与自己的自定义对象一起使用,请确保覆盖.equals
方法并对其进行编码,以便您可以为两个课程的相同内容定义自己的条件。如果不这样做,该方法很可能总是返回false。