java - 如何在java,springboot中避免多个or(||)进行空验证

SSK*_*SSK 0 java java-8 spring-boot

我有来自用户的三个输入

字符串key1
字符串key2
字符串key3

用户一次只能传递一个键作为输入。我正在验证它如下。

在我的代码中,我正在检查

if(key1 == null && key2 == null && key3 == null){
      throw new Exception("invalid input");
}else if((null != key1 && null != key2) || (null != key2 && null != key3) || (null != key1 && null != key3)){
    throw new Exception("invalid input");
}
Run Code Online (Sandbox Code Playgroud)

我们可以避免这些or条件吗?可能正在使用Java-8

对此的任何想法/建议将不胜感激。

注意:我有一个 JUnit 测试代码,所以我也需要减少测试用例的数量。

f1s*_*1sh 5

使用流 api 可以这样完成:

int count = Stream.of(key1, key2, key3).filter(Objects::nonNull).count();
if(count != 1) {
  throw new Exception("invalid input");
}
Run Code Online (Sandbox Code Playgroud)

  • `Stream.of(key1, key2, key3).filter(Objects::nonNull).count()` 会更好。 (4认同)