我正在使用状态机,并且针对大量可能的状态进行测试时,代码变得非常冗长。

enum Mood {
    HAPPY, SAD, CALM, SLEEPY, OPTIMISTIC, PENSIVE, ENERGETIC;
}

有什么办法可以做到这一点:
if (currentMood == (HAPPY | OPTIMISTIC | ENERGETIC) {}

代替这个:
if (currentMood == HAPPY || currentMood == OPTIMISTIC || currentMood == ENERGETIC) {}

还是在这种情况下坚持使用整数和标志会更好?

最佳答案

也许使用类似EnumSet的东西?

if (EnumSet<Mood>.of(HAPPY, OPTIMISTIC, ENERGETIC).contains(currentMood))
{
 //Do stuff...
}

09-04 20:53