对于循环,请在满足的内部if语句上破裂



在项目我有以下方法中,通过类型枚举局限于下面的流派枚举。问题在于,如果满足某些值的语句时,则循环中断且方法返回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;
}

}

也许您应该做的是:

boolean cond = false;
for(Genre g : genres){
    if(num == g.getId()){
        cond = true;
        break;   
    }
}
return cond;

,如果您仍然返回错误,则如果您的条件从未满足。

最新更新