Skip to main content

Command Palette

Search for a command to run...

Classes Wrapper em Java

Updated
3 min read
Classes Wrapper em Java
A
My name is Lucas. I'm a journalist and software developer who can take photos, print zines and make videos, that's no joke. 📸📰🎬💻🕺😅

Java wrappers são classes que nos permitem tratar um tipo primitivo como um Objeto. Em Java existe um Wrapper para cada um dos 8 tipos primitivos.

Antes de prosseguir, vamos revisar.

Tipos primitivos

Em Java os 8 tipos primitivos são pré-definidos e determinam quanta memória uma variável precisa para armazenar dados. Eles são os blocos básicos para a construção de todos os outros tipos de dados em Java.

Diferentemente de Objetos, tipos primitivos não tem campos ou métodos, eles simplesmente armazenam valores básicos de um tipo específico como números, caracteres ou booleanos.

Classes Wrapper

Instâncias de Wrapper contêm (ou encapsulam) um valor.

O valor é do tipo primitivo associado.

Portanto, Integer encapsula int, e assim por diante.

Classes Wrapper incluem campos extras e métodos. Por exemplo, wrappers numéricos tem um campo para o máximo valor permitido e métodos para converter Strings em números. Como esses campos e métodos fazem parte do core do Java, não precisamos fazer nenhuma importação para utilizá-los.

Para criar um Wrapper, atribuímos um valor primitivo a uma variável criada com o tipo do Wrapper, por exemplo:

Integer age = 12;
Double cost = 150250.55;
Float interest = 5.5f;
Character grade = 'A';
Boolean isActive = true;

Cada classe Wrapper possui um rico conjunto de campos e métodos.

Métodos

Existem métodos para imprimir o valor encapsulado no wrapper.

Outros, como doubleValue e toString, para converter seus valores para outros tipos.

O método compareTo compara o valor empacotado de um objeto wrapper com outro. Ele retorna 0 se os valores são iguais, um número negativo se o valor é maior e um número positivo se o valor é menor.

Métodos estáticos

Classes Wrapper também vem com um conjunto de métodos estáticos.

Métodos estáticos pertencem a classe ao invés das instâncias dessas classes e podem ser chamado antes mesmo de criarmos um objeto dessa classe. São, portanto, chamados pela classe.

Métodos como sum e remainderUnsigned fazem operações matemáticas nos valores primitivos. Métodos adicionais como parseInt e parseBoolean extraem valores primitivos de strings.

Alguns métodos wrapper interessantes:

Wrapper Method Returns
Boolean.logicalAnd(boolean a, boolean b) boolean
Boolean.logicalOr(boolean a, boolean b) boolean
Boolean.parseBoolean(String s) boolean
Character.getNumericValue(char ch) Unicode int value of the char
Character.isDigit(char ch) boolean
Character.isLowerCase(char ch) boolean
Character.isWhitespace(char ch) boolean
Double.parseDouble(String s) double
Double.longValue() the Double value, rounded down, as a Long

Campos estáticos

Classes wrapper normalmente também incluem campos estáticos. Por convenção esses campos são escritos em caixa alta. Classe Wrapper numéricas como Integer, por exemplo, possuem campos estáticos que armazenam o valor máximo e mínimo aceito pelo valor primitivo associado. Classes Wrapper booleanas, por usa vez, possuem campos estáticos para verdadeiro e falso:

System.out.println(Ingeger.MAX_VALUE);
System.out.println(Ingeger.MIN_VALUE);

System.out.println(Boolean.TRUE);
System.out.println(Boolean.FALSE);

A classe Wrapper Caracter para separadores de espaço ou de linha:

System.out.println(Caracter.SPACE_SEPARATOR); Unicode como ' ' 
System.out.println(Caracter.LINE_SEPARATOR); // Unicode como '\n'

Porque usar wrappers?

  • Permitem que um tipo primitivo seja tratado como um objeto.

  • Permitem que métodos e campos sejam associados ao tipo.

  • Permitem inserir tipos primitivos em objetos de coleção do Java.

  • Podem ter valor nulo

Enquanto variáveis primitivas sempre têm um valor padrão, mesmo quando não são atribuídas explicitamente. Uma instância de wrapper ou variável estática também pode ser nula e seu valor atribuído posteriormente.