Java Optional – orElse() vs orElseGet()

Qual a diferença entre usar o orElse() ou orElseGet() do Optional do Java?

Analisando sua assinatura conseguimos ter uma ideia, mas mesmo assim, pode gerar um pouco de confusão, mas a resposta é bem simples

public T orElse(T other)

public T orElseGet(Supplier<? extends T> other)

O método orElse() recebe um valor qualquer em seu argumento, ou seja, um objeto pronto, já o orElseGet() recebe uma interface funcional, que será executada apenas se seu valor do Optional for vazio (empty).

Se você tiver que executar um método APENAS se seu valor do Optional for vazio, utilize o orElseGet, caso contrário, seu método será sempre executado, já que o orElse recebe um valor concreto.

Sempre utilize o orElseGet caso o retorno que você precise seja algo dinâmico, ou que necessita ser construído apenas naquele momento.

Mas quando usar o orElse? se você tiver uma constante ou um objeto no mesmo escopo com o valor que deve ser retornado no caso do Optional ser vazio o orElse é útil, pois evitaria de criar um objeto a mais (que seria a interface funcional para encapsula-la) sem necessidade.

Help DEV – Analista desenvolvedor Java / Android https://helpdev.com.br/zarelli

Java Optional – orElse() vs orElseGet()

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Rolar para o topo