Skip to content
This repository has been archived by the owner on Jan 14, 2024. It is now read-only.

Latest commit

 

History

History
136 lines (123 loc) · 3.12 KB

ClassesWrappers.md

File metadata and controls

136 lines (123 loc) · 3.12 KB

Clases Wrappers

Java não pode ser considerado uma linguagem totalmente orientada a objetos por conta dos tipos primitivos. Os tipos primitivos não são instancias de nenhuma classe, são apenas valores específicos. A partir do Java 5, foi introduzido então classes wrappers que representam os tipos primitivos. As Classes wrappers os "empacotam" - fenômeno também conhecido como boxing.

Tabela de Hierarquia dos Tipos
Tipo Primitivo Classe Wrapper Super Classe
Lógico boolean Boolean Object
Caractere char Character
Inteiro byte Byte Number
short Short
int Integer
long Long
Ponto Flutuante float Float
double Double

Antigamente, era possível usar os construtores dos wrappers pra instanciar os tipos primitivos distintos.

 // Wrappers

    Short num7 = new Short((short) 1);
    Byte num8 = new Byte((byte) 10);
    Integer num9 = new Integer(100);
    Long num10 = new Long(1000L);
    Float num11 = new Float(3.5f);
    Double num12 = new Double(3.5555);
    Boolean flag2 = new Boolean(true);
    Character b = new Character('b');

Entrentanto, desde a versão 9 do Java que essa maneira foi depreciada.1 De acordo com a documentação da Oracle, raramente o uso é apropriado e portanto é uma escolha melhor usar os método estático <Wrapper>.valueOf()2

// o tipo de num vai ser int (primitivo)
var num = Integer.parseInt("254");

// o tipo de numInt vai ser Integer (Wrapper)
var numInt = Integer.valueOf("9121")

Autoboxing e Unboxing

Uma funcionalidade muito útil que o compilador Java fornece é a conversão automática entre os tipos primitivos e os wrappers correspondentes.

// Autoboxing
// O primitivo é automaticamente convertido na classe Long
Long numW = 1000L;

// Unboxing
// A classe Long é automaticamente convertida no tipo primitivo
long numP = numW;

Footnotes

  1. https://stackoverflow.com/a/47095501

  2. https://docs.oracle.com/javase/9/docs/api/deprecated-list.html#constructor