Я ищу более элегантное решение этого кода:
var first = Optional.ofNullable(a); var second = Optional.ofNullable(b); if ((unit.isPresent() && value.isEmpty()) || (value.isPresent() && unit.isEmpty())) { throw new ExpWhatever(); }
Условия:
Спасибо за любые идеи или помощь.
Звучит так, будто isPresent() является верным только для одного из них, поэтому XOR работает хорошо:
isPresent()
if (unit.isPresent() ^ value.isPresent()) { // Throw an exception }
Если вы хотите, чтобы оба дополнительных компонента были либо присутствующими, либо пустыми (т.е. они имеют одинаковое состояние "пустота"), вы можете использовать это:
if (unit.isPresent() != value.isPresent()) { //throw an exception }