Java 两个选项的优雅解决方案,如果一个选项存在,另一个选项不得为空

Java 两个选项的优雅解决方案,如果一个选项存在,另一个选项不得为空,java,optional,Java,Optional,我正在寻找此代码的更优雅的解决方案: var first = Optional.ofNullable(a); var second = Optional.ofNullable(b); if ((unit.isPresent() && value.isEmpty()) || (value.isPresent() && unit.isEmpty())) { throw new ExpWhatever(); } 条件是: 如果两个选项均为null->

我正在寻找此代码的更优雅的解决方案:

var first = Optional.ofNullable(a);
var second = Optional.ofNullable(b);
if ((unit.isPresent() && value.isEmpty()) || (value.isPresent() && 
     unit.isEmpty())) {
  throw new ExpWhatever();
}
条件是:

  • 如果两个选项均为null->ok,则无错误/例外
  • 如果存在一个给定选项,则另一个选项也不得为空(否则:例外。)

感谢您提供的任何想法或帮助。

对于其中一个,如果
isPresent()
恰好为真,听起来好像是一个错误-因此XOR工作得很好:

if (unit.isPresent() ^ value.isPresent()) {
    // Throw an exception
}

如果您希望两个选项都存在或为空(即它们具有相同的“空”状态),您可以使用以下选项:

if (unit.isPresent() != value.isPresent()) {
  //throw an exception
}