Необязательное нулевое значение с типом - PullRequest
0 голосов
/ 02 сентября 2018

Есть ли более краткий способ создания Optional.ofNullable указанного типа без присвоения его переменной?

Рабочий раствор:

public Optional<V> getValue2(K key) {
    Node<K, V> node = getNode(key);
    Optional<V> nullable = Optional.ofNullable(null);
    return isNull(node) ? nullable : Optional.ofNullable(node.getValue());
} 

Здесь я получаю сообщение об ошибке: «Несоответствие типов: невозможно преобразовать из необязательного в необязательный»

public Optional<V> getValue(K key) {
    Node<K, V> node = getNode(key);
    return isNull(node) ? Optional.ofNullable(null) : Optional.ofNullable(node.getValue());
}

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Я думаю, что вы ищете это:

Optional.<V>ofNullable(null);

или в вашем случае, если всегда передается нулевое значение:

Optional.<V>empty();    
0 голосов
/ 02 сентября 2018

В принципе, более простой способ будет:

public Optional<V> getValue(K key) {
    return Optional.ofNullable(getNode(key))
                   .map(Node::getValue);
}  

Если вы все еще хотите придерживаться того, что у вас было, вы можете сделать это с помощью:

public Optional<V> getValue(K key) {
    Node<K, V> node = getNode(key);
    return isNull(node) ? 
            Optional.empty() : Optional.ofNullable(node.getValue());
}
...