• Skip to primary navigation
  • Skip to content

Mauda

IT, Java and Music

Graduação   SCJP   Mestrado
  • Apresentação
  • Certificação Java
  • JPA
    • Exceptions
  • JSF
  • Versionamento
  • Contato

Classe Optional – Use com moderação!

April 17, 2017 by Mauda Leave a Comment

Conteúdo do Post:
  1. Classe java.util.Optional
  2. O uso do Optional em excesso
  3. finally{

Olá Pessoal, tudo bom?

O post de hoje é relacionado a uma nova classe criada no Java SE 8, java.util.Optional. Irei descrever algumas vantagens e um problema de código gerado pela utilização total e cega disso em qualquer lugar cabível. Veja na continuação desse post…

Classe java.util.Optional

A versão 8 do Java SE introduziu uma nova classe de nome Optional. Esta se encontra no package java.util.

A principal utilidade desta é indicar se um valor está presente ou ausente. A vantagem disso é que não é necessário mais verificações de null e principalmente NullPointerExceptions. Huuuuuuummmmm interessante hã? Isso ajuda a deixar o código mais limpo. Assim as principais vantagens seriam:

1 – Verificações de null não são necessárias

2 – Não existiriam mais NullPointerExceptions durante a execução

3 – Desenvolvimento de APIs mais limpas e puras

4 – Fim dos códigos clichês!

Abaixo um código de exemplo utilizado a classe Optional:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package br.com.mauda.novidade.java8.optional;
 
import java.util.Optional;
 
public class OptionalExemploBasico {
public static void main(String[] args) {
Optional<String> linguagem = Optional.of("JAVA");
String respostaPreenchida = "Sim";
String respostaNula = null;
 
System.out.println("Optional Não Vazio:" + linguagem);
System.out.println("Optional Não Vazio: Obtem o valor: " + linguagem.get());
System.out.println("Optional Vazio: " + Optional.empty());
 
System.out.println("Chamada do método ofNullable() em Optional Não Vazio: " + Optional.ofNullable(respostaPreenchida));
System.out.println("Chamada do método ofNullable() em Optional Vazio: " + Optional.ofNullable(respostaNula));
 
// Ocorre uma java.lang.NullPointerException na linha abaixo
System.out.println("Chamada do método of() Optional Não Vazio: " + Optional.of(respostaNula));
}
}

A saída desse código será a seguinte:

Java
1
2
3
4
5
6
7
8
9
10
Optional Não Vazio:Optional[JAVA]
Optional Não Vazio: Obtem o valor: JAVA
Optional Vazio: Optional.empty
Chamada do método ofNullable() em Optional Não Vazio: Optional[Sim]
Chamada do método ofNullable() em Optional Vazio: Optional.empty
Exception in thread "main" java.lang.NullPointerException
at java.util.Objects.requireNonNull(Objects.java:203)
at java.util.Optional.<init>(Optional.java:96)
at java.util.Optional.of(Optional.java:108)
at br.com.mauda.novidade.java8.optional.OptionalExemploBasico.main(OptionalExemploBasico.java:19)

Como pode ser verificado no console acima, não há NullPointerException nas chamadas do método ofNullable(). Já no caso do método of() irá ocorrer uma exception, pois esse método não é “null safe“.

Existem muito mais aprofundamentos dessa classe Optional, mas o objetivo desse post não é apresentar isso, mas sim o que pode ocorrer com o seu código ao utilizar essa abordagem ao extremo:

O uso do Optional em excesso

Observe o seguinte código abaixo que se encontra em uma classe qualquer:

Java
1
2
3
4
5
6
7
public static boolean isPresente(Object objeto) {
return Optional.ofNullable(objeto).isPresent();
}
 
public static boolean isNotPresente(Object objeto) {
return !isPresente(objeto);
}

É um código fácil de entender? A principio se você possui o conhecimento da classe Optional é facil. Nós temos um objeto e utilizamos o método ofNullable() e a partir desse verificamos se está “presente” no retorno da chamada desse método.

Grande parte das tarefas do nosso dia a dia é evitar códigos complexos, que muitas vezes atrapalhem uma leitura rápida do código. Infelizmente isso faz parte da nossa profissão de desenvolvedor. Quando é possível que os desenvolvedores façam algo simples, eles piram o cabeção e deixam algo muito mais complexo que o necessário.

Aquele código acima pode ser simplificado? PODE! Pode ser melhor legível? PODE! Então como ficaria o código acima mais simples? Observe:

Java
1
2
3
4
5
6
7
public static boolean isPresente(Object objeto) {
return objeto != null;
}
 
public static boolean isNotPresente(Object objeto) {
return objeto == null;
}

E aí? Muito mais simples? Muito mais fácil sua leitura?

Então o que fica desse post hoje, muito mais que a utilização do Optional é

FAÇA O SEU CÓDIGO O MAIS SIMPLES E FUNCIONAL POSSÍVEL!!!

finally{

Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!

Até um próximo post!

Filed Under: Java Tagged With: Java, java8, NullPointerException, Optional

About Mauda

Mestre em Informática, Analista de Sistemas, Professor, SCJP e Baterista. Desde 2002 trabalhando no mundo Java e ensinando pessoas sobre desenvolvimento de sistemas. Mais informações

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Advertisements

Copyright © 2025 · Genesis Framework · WordPress · Log in