Como isso funciona - Java 8 Optional.of e Optional.ofNullable

user3792861:

Eu tenho pergunta com Java 8 Opcionais.

O código abaixo dá erro de compilação:

Integer number = Optional.ofNullable(new Integer(10)); 

Mas quando fazemos o seguinte ele não , eu não entendo como isso está funcionando:

Integer number = Optional.ofNullable(new Integer(10)).orElse(10); 

Se olharmos para a documentação de Optional.ofNullable(), ele retorna um objeto do tipo static <T> Optional<T> ofNullable(T value)que significa que ele é do tipo internamente casting, mas a documentação diz que tipo de retorno é Optional.

Tenho que o .orElsetipo de retorno do método é Tque iria funcionar bem , se ele vai para orElsea condição, ou seja, no caso do passado em objeto é null, mas se não é nulo como é que typecast-lo?

Ravindra Ranwala:

Dê uma olhada na declaração do método,

public static <T> Optional<T> ofNullable(T value)

Então, isso leva T e retorna Optional<T>Assim, no seu caso, leva Integere retorna umOptional<Integer>

Então, quando você fizer isso,

Optional.ofNullable(new Integer(10)).orElse(10);

A orElsechamada será desembrulhar o opcional e retorna o valor nela se não está vazio. Caso contrário, ele simplesmente retorna o valor dado.

Atualizar

De acordo com os seguintes comentários que você pode simplificá-lo ainda mais, deixando o trabalho para a Autoboxing.

Optional.ofNullable(10).orElse(10);

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=196910&siteId=1
Recomendado
Clasificación