Início‎ > ‎

Validar unboxing para tipos primitivos

Java, a partir da versão 5, permite que tipos primitivos sejam usados em conjunto com objetos que os encapsulem sem necessidade de uma conversão explícita. Este processo, que transforma automaticamente um int em Integer, é chamado de Autoboxing e seu reverso (que transforma um Integer em int) de unboxing. Entretanto os objetos que encapsulam tipos primitivos (conhecidos por wrappers) permitem o valor null enquanto os tipos primitivos não aceitam. Um serviço que receba objetos wrapper deve validar se o objeto não é nulo antes de proceder a operações que envolvam o unboxing. O trecho de código abaixo:

public void f(Integer wrapper) {
   int primitive = 0;
   if(wrapper == primitive) {
      // ... excuta operação ...
   }
}

Pode comprometer a execução da aplicação caso o chamador do serviço envie valores nulos. Para evitar que o serviço provido seja interrompido por uma exceção, o trecho deve ser reescrito de forma a testar se o parâmetro é nulo:

public void f(Integer wrapper) {
   int primitive = 0;
   if(wrapper != null && wrapper == primitive) {
      // ... excuta operação ...
   }
}

Dessa forma evitando o erro ao executar o unboxing.
Comments