如何使用 Java 8 Lambda 验证两个变量
How can I validate two variables with Java 8 Lambda
如何使用 Java 8 Lambdas 执行此操作:
Optional<String> code;
if (accountType.requiresCode() && (!code.isPresent() || empty(code.get()))) {
new IllegalArgumentException("Account type " + accountType + " requires code");
}
你可以使用
if (accountType.requiresCode() && code.map(this::empty).orElse(true))
但我不确定它是否使代码更具可读性。
您可以将代码重写为
Optional<String> code;
if (accountType.requiresCode()) code.filter(x->!empty(x)).orElseThrow(
() -> new IllegalArgumentException("Account type " + accountType + " requires code")
);
或者,假设您的 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")
);
但这并没有真正增加可读性。 Lambda 并不总是比普通代码好。
根据这个问题 可选在这里不是一个好的选择,尽管在技术上是可行的。
您可以使用 StringUtils 重写得更好:
final String code = getCodeFromSomething();
if (accountType.requiresCode() && StringUtils.isEmpty(code)) {
new IllegalArgumentException("Account type " + accountType + " requires code");
}
如何使用 Java 8 Lambdas 执行此操作:
Optional<String> code;
if (accountType.requiresCode() && (!code.isPresent() || empty(code.get()))) {
new IllegalArgumentException("Account type " + accountType + " requires code");
}
你可以使用
if (accountType.requiresCode() && code.map(this::empty).orElse(true))
但我不确定它是否使代码更具可读性。
您可以将代码重写为
Optional<String> code;
if (accountType.requiresCode()) code.filter(x->!empty(x)).orElseThrow(
() -> new IllegalArgumentException("Account type " + accountType + " requires code")
);
或者,假设您的 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")
);
但这并没有真正增加可读性。 Lambda 并不总是比普通代码好。
根据这个问题
您可以使用 StringUtils 重写得更好:
final String code = getCodeFromSomething();
if (accountType.requiresCode() && StringUtils.isEmpty(code)) {
new IllegalArgumentException("Account type " + accountType + " requires code");
}