2016-01-24 80 views
0

我有以下枚举Java的验证作为参数传递一个枚举值

public enum State { 
    UNCHECKED, SUBMITTED, VALIDATED, REJECTED, ENTITLED; 
} 

,并在另一个类中我有一个接收一个国家作为参数,这样

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

在IF上使用'&&'而不是'||'! –

回答

2

条件state != State.VALIDATED || state != State.REJECTED始终为真。唯一的方法就是让状态为false,同时拒绝。

你想要&&而不是||

+0

是的,我注意到昨晚!当我纠正它时,一切都变得完美了。谢谢 –

相关问题