我正在寻找这段代码的更优雅的解决方案:
var first = Optional.ofNullable(a);
var second = Optional.ofNullable(b);
if ((unit.isPresent() && value.isEmpty()) || (value.isPresent() &&
unit.isEmpty())) {
throw new ExpWhatever();
}
条件是:
感谢任何想法或帮助。
答案 0 :(得分:7)
isPresent()
对于其中之一完全正确,这似乎是一个错误-因此XOR效果很好:
if (unit.isPresent() ^ value.isPresent()) {
// Throw an exception
}
答案 1 :(得分:5)
如果您希望两个可选项都存在或为空(即它们具有相同的“空”状态),则可以使用以下方法:
if (unit.isPresent() != value.isPresent()) {
//throw an exception
}