调用包含Java列表中的可选值?

Cus*_*Bun 4 java lambda optional java-8

在Java 8中,

我目前有一个看起来像这样的lambda:

.createSomething((acceptableStates, someProxy) -> (userId) ->   
    acceptableStates.contains(someProxy.getSomeAttributeId(userId)))
Run Code Online (Sandbox Code Playgroud)

但是,我们更改了someProxy.getSomeAttributeId以返回Optional<String>而不是字符串.

什么是最干净/最被接受的基本检查方式是否acceptableStates包含someProxy.getSomeAttributeId(userId)if返回的属性是否为空的值?

(注意:acceptableStates仍然是字符串列表,而不是Optional<String>)

Eug*_*ene 7

.... userId -> someProxy.getSomeAttributeId(userId)
                        .map(acceptableStates::contains)
                        .orElse(Boolean.FALSE);
Run Code Online (Sandbox Code Playgroud)