Junior — Middle
Qual é a diferença entre os métodos orElse e orElseGet em Java, e quais são as suas características de uso?
sobes.tech IA
Resposta da IA
Em Java, os métodos orElse e orElseGet são usados com a classe Optional para definir um valor padrão caso o objeto esteja ausente.
orElse(T other)— aceita um valor padrão que é calculado imediatamente ao chamar o método, independentemente de haver ou não um valor no Optional.orElseGet(Supplier<? extends T> other)— aceita um fornecedor (função) que é chamado somente se o valor estiver ausente, ou seja, o cálculo do valor é adiado até que seja necessário.
Características de uso:
- Se o cálculo do valor padrão for caro ou tiver efeitos colaterais, é melhor usar
orElseGetpara evitar custos desnecessários. - Se o valor for simples e rápido, pode-se usar
orElse.
Exemplo:
Optional<String> opt = Optional.empty();
// orElse sempre calcula "default"
String result1 = opt.orElse(getDefault());
// orElseGet chama getDefault() apenas se opt estiver vazio
String result2 = opt.orElseGet(() -> getDefault());
public String getDefault() {
System.out.println("Calculando valor padrão");
return "default";
}