在项目中我有以下方法,它迭代了Genre枚举,也在下面给出。问题是当if语句满足某些值时,for循环中断并且该方法返回false。这段代码可能有什么问题?
感谢。
private boolean genreExists(Integer num) {
Genre[] genres = Genre.values();
for(Genre g : genres){
if(num == g.getId()){
return true;
}
}
return false;
}
public enum Genre {
ACTION(28),
ADVENNTURE(12),
ANIMATION(16),
COMEDY(35),
CRIME(80),
DOCUMENTARY(99),
DRAMA(18),
FAMILY(10751),
FANTASY(14),
HISTORY(36),
HORROR(27),
MUSIC(10402),
MYSTERY(9648),
ROMANCE(10749),
SCIENCEFICTION(878),
TVMOVIE(10770),
THRILLER(53),
WAR(10752),
WESTERN(37);
private static final Map<Integer, Genre> map = new HashMap<>();
static{
for(Genre g : values()){
map.put(g.getId(), g);
}
}
int id;
Genre(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public static Genre of(Integer id){
Genre result = map.get(id);
if(result == null){
throw new IllegalArgumentException("Invalid id value: " + id);
}
return result;
}
}
答案 0 :(得分:-1)
也许你应该做的是:
boolean cond = false;
for(Genre g : genres){
if(num == g.getId()){
cond = true;
break;
}
}
return cond;
如果你仍然得到错误的返回,那么你的IF条件永远不会得到满足。