带类型的可选null值

问题描述 投票:4回答:2

有没有更简洁的方法来创建指定类型的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());
} 

在这里我收到一个错误:“类型不匹配:无法从Optional转换为Optional”

public Optional<V> getValue(K key) {
    Node<K, V> node = getNode(key);
    return isNull(node) ? Optional.ofNullable(null) : Optional.ofNullable(node.getValue());
}
java java-8 optional
2个回答
6
投票

基本上,一种更简单的方法是:

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());
}

2
投票

我想你正在寻找这个:

Optional.<V>ofNullable(null);

或者在您的情况下,如果总是传递null:

Optional.<V>empty();    
© www.soinside.com 2019 - 2024. All rights reserved.