Элегантное решение для двух дополнительных, если один присутствует, другой не должен быть пустым - PullRequest
2 голосов
/ 14 марта 2019

Я ищу более элегантное решение этого кода:

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

Условия:

  • , если оба параметра имеют значение null -> хорошо, без ошибок / исключение.
  • если присутствует один из указанных дополнительных параметров, другой также не должен быть пустым (в противном случае: исключая)

Спасибо за любые идеи или помощь.

Ответы [ 2 ]

7 голосов
/ 14 марта 2019

Звучит так, будто isPresent() является верным только для одного из них, поэтому XOR работает хорошо:

if (unit.isPresent() ^ value.isPresent()) {
    // Throw an exception
}
5 голосов
/ 14 марта 2019

Если вы хотите, чтобы оба дополнительных компонента были либо присутствующими, либо пустыми (т.е. они имеют одинаковое состояние "пустота"), вы можете использовать это:

if (unit.isPresent() != value.isPresent()) {
  //throw an exception
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...