如何使用 Java 8 Lambda 验证两个变量

Oli*_*ira 2 lambda java-8

如何使用 Java 8 Lambdas 执行此操作:

Optional<String> code;
if (accountType.requiresCode() && (!code.isPresent() || empty(code.get()))) {
    new IllegalArgumentException("Account type " + accountType + " requires code");
}
Run Code Online (Sandbox Code Playgroud)

Hol*_*ger 6

可以将代码重写为

Optional<String> code;
if (accountType.requiresCode()) code.filter(x->!empty(x)).orElseThrow(
  () -> new IllegalArgumentException("Account type " + accountType + " requires code")
);
Run Code Online (Sandbox Code Playgroud)

或者,假设您的empty(code.get())实际意思是code.get().isEmpty()

Optional<String> code=Optional.empty();
if (accountType.requiresCode()) code.filter(x->!x.isEmpty()).orElseThrow(
  () -> new IllegalArgumentException("Account type " + accountType + " requires code")
);
Run Code Online (Sandbox Code Playgroud)

但它并没有真正增加可读性。Lambda 并不总是比普通代码更好。