Is there a more concise way of creating an Optional.ofNullable of specified type without assigning it to the variable?
The working solution:
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());
}
Here I get an error: "Type mismatch: cannot convert from Optional to Optional"
public Optional<V> getValue(K key) {
Node<K, V> node = getNode(key);
return isNull(node) ? Optional.ofNullable(null) : Optional.ofNullable(node.getValue());
}
Basically, a simpler way would be:
public Optional<V> getValue(K key) {
return Optional.ofNullable(getNode(key))
.map(Node::getValue);
}
If you still want to stick with what you had, you could do it with:
public Optional<V> getValue(K key) {
Node<K, V> node = getNode(key);
return isNull(node) ?
Optional.empty() : Optional.ofNullable(node.getValue());
}
I think you are looking for this:
Optional.<V>ofNullable(null);
or in your case, if there is always a null passed:
Optional.<V>empty();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With