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."));
}
}
順調に
if (spouseIsMale.orElse(false)) {
System.out.println("There is a male spouse.");
}
クリア。
.filter(b -> b)
を使用すると、この動作を実現できます。
spouseIsMale.filter(b -> b).ifPresent(b -> System.out.println("There is a male spouse."));
ただし、ここで何が起こっているかを理解するには、いくつかのブレイン実行時間秒かかります。
上記のすべての回答を組み合わせたもの:
spouseIsMale
.filter(Boolean::booleanValue)
.ifPresent(
value -> System.out.println("There is a male spouse.")
);
従来のif(condition){ //Do something if true; }
なしでこれを記述したい人向け
Optional.of(Boolean.True)
.filter(Boolean::booleanValue)
.map(bool -> { /*Do something if true;*/ })
私が通常使用するのは(私もnull値をチェックする)です:
_Optional.ofNullable(booleanValue).filter(p -> p).map(m -> callFunctionWhenTrue()).orElse(doSomethingWhenFalse());
_
これには3つの部分があります。
Optional.ofNullable(booleanValue)
-null値をチェックします.filter(p -> p).map(m -> callFunctionWhenTrue())
-ブール値trueおよびマップ関数のフィルターチェック.orElse(doSomethingWhenFalse())
-ブール値がfalseの場合、この部分が実行されます少し縮めることができます。
Optional<Boolean> spouseIsMale= Optional.of(true);
spouseIsMale.ifPresent(v -> { if (v) System.out.println("There is a male spouse.");});