函数if if在布尔值上

gri*_*rdo 3 java optional java-8

我想在布尔可选值上做一个非常基本的if else.我想我遗漏了一些非常基本的东西

所以旧学校如果其他巢就是这样的

    if (filterValue.isPresent()) {
        if (filterValue.get()==true) {
            method1();
        } else {
            method2();
        }
    } else {
        method3();
    }
Run Code Online (Sandbox Code Playgroud)

我尝试了2次替换的各种尝试

filterValue.map(o -> o.TRUE ? method1() : method2()).orElse(method3());
Run Code Online (Sandbox Code Playgroud)

filterValue.isPresent(filterValue.get().TRUE ? method1() : method2());
Run Code Online (Sandbox Code Playgroud)

并不能完全得到语法?

有人能指出我正确的方向吗?

Lin*_*ica 5

map不起作用,因为既没有method1method2没有返回值.并且void不允许映射到.

目前在Java 8中没有真正的解决方案,但如果您碰巧使用Java 9,则可以通过ifPresentOrElse(Consumer<T>, Runnable>)以下方式实现:

filterValue.ifPresentOrElse(value -> {
    if(value){
        method1();
    } else {
        method2();
    }
}, () -> method3());
Run Code Online (Sandbox Code Playgroud)