2 Optionalsのためのエレガントな解決策がある場合は、それ他の必須を空にすることはできませ

DerBenniAusA:

私は、このコードのよりエレガントな解決策を探します。

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

条件は以下のとおりです。

  • > [OK]を、エラーなし/ EXCPT - 両方のoptionalsがnullの場合。
  • (:EXCPTそうでない。)所与optionalsの一方が存在する場合、他の必須もが空でありません

任意のアイデアやヘルプをありがとう。

ジョンスキート:

それはのためのエラーだように聞こえるisPresent()正確に一つのそれらのために真である-ので、XORはうまく動作します。

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=221936&siteId=1