我有以下枚举
public enum State {
UNCHECKED, SUBMITTED, VALIDATED, REJECTED, ENTITLED;
}
在另一个类中我有一个接收State作为参数的方法,比如
public void validate (State state) throws InvalidStateException {
if (state != State.VALIDATED || state != State.REJECTED)
throw new InvalidStateException();
}
只有当参数State不是State.VALIDATED或State.REJECTED但实际上总是抛出它时,此方法才应抛出异常InvalidStateException。 我只是看不出错误在哪里,或者我怎么能以另一种方式编写代码。
我知道这不起作用,因为下面的JUnit测试表明引发了异常并且它不应该出现:
@Test
public void testValidate () throws InvalidStateException {
object.validate(State.VALIDATED);
}
答案 0 :(得分:2)
条件state != State.VALIDATED || state != State.REJECTED
始终为真。唯一可能是错误的方法是让状态同时被确认和拒绝。
您需要&&
,而不是||
。