web-dev-qa-db-ja.com

オプションのブール値がtrueの場合のアクションの実行方法

Java 8では、オプションのブール値を保持する変数があります。

オプションが空でなく、含まれるブール値がtrueである場合、アクションを実行する必要があります。

私はifPresentAndTrueのようなものを夢見ています、ここに完全な例があります:

import Java.util.Optional;

public class X {
  public static void main(String[] args) {
    Optional<Boolean> spouseIsMale = Optional.of(true);
    spouseIsMale.ifPresentAndTrue(b -> System.out.println("There is a male spouse."));
  }
}
11
slartidan

順調に

if (spouseIsMale.orElse(false)) {
    System.out.println("There is a male spouse.");
}

クリア。

20
Joop Eggen

.filter(b -> b)を使用すると、この動作を実現できます。

spouseIsMale.filter(b -> b).ifPresent(b -> System.out.println("There is a male spouse."));

ただし、ここで何が起こっているかを理解するには、いくつかのブレイン実行時間秒かかります。

6
slartidan

上記のすべての回答を組み合わせたもの:

spouseIsMale
.filter(Boolean::booleanValue)
.ifPresent(
  value -> System.out.println("There is a male spouse.")
);
3
dstibbe

従来のif(condition){ //Do something if true; }なしでこれを記述したい人向け

Optional.of(Boolean.True)
    .filter(Boolean::booleanValue)
        .map(bool -> { /*Do something if true;*/ })
2
Sanjay K S

私が通常使用するのは(私もnull値をチェックする)です:

_Optional.ofNullable(booleanValue).filter(p -> p).map(m -> callFunctionWhenTrue()).orElse(doSomethingWhenFalse());
_

これには3つの部分があります。

  1. Optional.ofNullable(booleanValue)-null値をチェックします
  2. .filter(p -> p).map(m -> callFunctionWhenTrue())-ブール値trueおよびマップ関数のフィルターチェック
  3. .orElse(doSomethingWhenFalse())-ブール値がfalseの場合、この部分が実行されます
0

少し縮めることができます。

Optional<Boolean> spouseIsMale= Optional.of(true);
spouseIsMale.ifPresent(v -> { if (v) System.out.println("There is a male spouse.");});
0