Eleve seu código para outro patamar com Optional
Alinhe seu código com os princípios da programação funcional. Use Optional em Java para solucionar problemas com valores nulos e também…
Eleve seu código para outro patamar com Optional

Alinhe seu código com os princípios da programação funcional. Use Optional em Java para solucionar problemas com valores nulos e também explorar a criação de pipelines de operações. Ao entender a relação do Optional com a programação funcional, os developers podem elevar sua programação para outro patamar de concisão e segurança. O Optional não proporciona apenas uma melhoria técnica, quando substitui métodos tradicionais de verificação de valores nulos, mas oferece melhoria robusta na legibilidade e na manutenção do código.
Veja quais são os principais métodos do Optional: of(); ofNullable(); isPresent(); ifPresent(); orElse(); orElseGet(); orElseThrow(); ifPresentOrElse(); get(), empty().
1) Optional.of(“valor”) — cria Optional com valor não nulo ou, caso nulo, lança NullPointerException.
Optional<String> optional = Optional.of(“Valor presente”);
2) Optional.ofNullable(“valor”) — cria Optional que pode conter valor nulo.
Optional<String> optional = Optional.ofNullable(null);
3) optional.isPresent() — verifica se o Optional contém valor não nulo.
Optional<String> optional = Optional.of(“Valor presente”);
if (optional.isPresent()) {
// Faça algo com o valor
} else {
// Faça algo com a ausência do valor
}
4) optional.ifPresent() — executa bloco de código se o Optional contiver valor não nulo.
optional.ifPresent(valor -> System.out.printf(“Valor presente: %s”, valor));
5) optional.orElse() — fornece valor padrão se o Optional estiver vazio.
String valor = optional.orElse(“Valor padrão”);
6) optional.orElseGet() — retorna o valor do Optional se estiver presente. Do contrário, retorna o resultado de um Lambda ou Reference Method.
String resultado = optionalValue.orElseGet(() → “Valor padrão com Lambda”);
String resultado = optionalValue.orElseGet(OptionalExample::getDefault);
7) optional.orElseThrow() — lança exceção específica se Optional estiver vazio.
String resultado = optional.orElseThrow(() -> new NoSuchElementException(“Valor ausente”));
8) Optional.empty() — cria Optional vazio.
Optional<String> resultado = Optional.empty();
9) optional.ifPresentOrElse() — permite executar uma ação específica se o Optional contiver valor e permite executar ação alternativa se estiver vazio.
optionalValue.ifPresentOrElse(
value → System.out.println(“Valor presente: “ + value),
() → System.out.println(“Valor ausente“)
);
10) optional.get() — é usado para obter o valor contido no Optional. Porém, se o Optional estiver vazio, será lançada uma exceção NoSuchElementException.
String valor = optionalValue.get();
Ao usar Optional, desenvolvedores escrevem código mais declarativo, que expressa melhor a lógica em termos de transformações e operações sobre dados, sem a necessidade de lidar diretamente com valores nulos. A capacidade de criar pipelines de operações é uma de suas características mais poderosas. E são vários os métodos oferecidos pelo Optional capazes de substituir práticas tradicionais, como, por exemplo: trocar operador ternário por ofNullable().orElse(); ou trocar If por ifPresente(), entre outros.
Agora veja exemplos de substituição e de pipeline:
- Substituitr Operador Ternário por orElse():
String resultado = (valor != null) ? valor : “Valor Padrão”;
String resultado = Optional.ofNullable(valor).orElse(“Valor Padrão”);
- Substituir if por ifPresent():
if (valor != null) {
System.out.println(“Valor: “ + valor);
}
Optional.ofNullable(valor).ifPresent(v -> System.out.println(“Valor: “ + v));
- O melhor de tudo é poder encadear vários desses métodos para formar pipelines:
Optional<String> resultado = Optional.of(“Este é um valor não nulo”)
.map(valor -> transformar(valor)) // Transforma o valor presente
.filter(valor -> verificar(valor)) // Filtra o valor, se presente
.flatMap(valor -> processar(valor)) // Processa o valor, se presente
.orElse(“Valor padrão em caso de ausência”); // Valor padrão se ausente
-
map: Aplica uma função ao valor presente do Optional, se existir, e retorna um novo Optional com o resultado da aplicação da função.
-
filter: Retorna um Optional vazio se o valor não atender a um determinado critério especificado pela função fornecida.
-
flatMap: Similar ao map, mas aceita uma função que retorna um Optional. Útil para evitar a aninhamento desnecessário de Optional.
-
orElse: Fornece um valor padrão se o Optional estiver vazio.
Essa abordagem faz uso de Programação Funcional e permite criar pipelines de operações de forma legível e concisa, evitando a necessidade de verificações verbosas de nulos.
메타데이터
- post_id
- cfc74ec9b316
- slug
- eleve-seu-código-para-outro-patamar-com-optional-cfc74ec9b316
- url
- https://medium.com/@juniorsoaresmartins/eleve-seu-c%C3%B3digo-para-outro-patamar-com-optional-cfc74ec9b316
- canonical_url
- https://medium.com/@juniorsoaresmartins/eleve-seu-c%C3%B3digo-para-outro-patamar-com-optional-cfc74ec9b316
- author_url
- https://medium.com/@juniorsoaresmartins
- status
- ok
- fetched_at
- 2026-06-23 17:05:31