Precisa de um freelancer, códigos-fonte e exemplos completos?
Bem-vindo(a) ao meu site. Além de realizar alguns serviços como freelancer eu tenho alguns códigos-fonte e exemplos completos de Java, Delphi, PHP, Python, C/C++, Hibernate, JPA, Spring, JSP, Servlets, Ruby, Ruby On Rails e muitas outras linguagens e frameworks. Veja como falar comigo clicando aqui.
 
Arquivo de Códigos - Página Inicial
Códigos-fonte
» Códigos-fonte e exemplos completos
Linguagens
» ActionScript
» Adobe AIR
» Adobe Flex
» AJAX
» C
» C#
» C++
» CSS
» Delphi
» DHTML - Dynamic HTML
» HTML/XHTML
» Java
» JavaFX
» JavaScript
» Java Servlets
» JSP - Java Server Pages
» Perl
» PHP
» PHP-GTK
» Python
» Ruby
» Tcl/Tk
» VB.NET
Bancos de Dados
» IBM DB2
» MySQL
Frameworks
» CodeIgniter
» jQuery
» JSF - Java Server Faces
» Qt
» Ruby On Rails
» Struts
» Struts 2
» wxWidgets
» Zend Framework
Container/Servidor
» Apache Tomcat
» Apache Web Server
Ferramentas
» Apache Ant
» iTextSharp (iText#)
Referências
» CSS1 e CSS2
» JavaScript
Serviços On-Line
» Qual é meu IP?
» Tabela Cores HTML I
» Tabela Cores HTML II
» Lista de Mime Types
» Códigos Teclas Virtuais
Usuários On-Line
Visitantes: 44
PHP
O que há de novo no PHP 5?
40 dicas e truques sobre como trabalhar com datas e horas em PHP
60 dicas e truques sobre como trabalhar com strings e caracteres em PHP
PHP e a Orientação a Objetos - POO (Curso Completo)

DHTML
Curso completo de DHTML para iniciantes

CSS
Como definir uma imagem de fundo fixa na página
Definindo uma imagem de fundo para botões HTML
Você está aqui: Inicio -> Tutoriais -> Java
Recursos de autoboxing e unboxing - O que são e quando devo usar?
1 - Introdução

Antes de falarmos sobre o que são autoboxing e unboxing, vamos analisar o método add da classe ArrayList:

public boolean add(E o)

Neste método podemos ver que o argumento E é do tipo objeto, ou melhor, um tipo de referência a um objeto. Sendo assim, o processo de adicionar um tipo primitivo (int, float, double, etc) a uma ArrayList teria que ser feito usando as classes invólucros (wrapper classes - Integer, Float, Double, etc). Veja um exemplo:

import java.util.ArrayList;

public class Estudos{
  public static void main(String[] args){
    // cria uma ArrayList que conterá inteiros
    ArrayList<Integer> valores = new ArrayList<Integer>();

    // adiciona itens na lista
    valores.add(new Integer(34));
    valores.add(new Integer(10));
    valores.add(new Integer(87));

    System.exit(0);
  }
}


Veja que antes de adicionar o valor primeiro (int) nós tivemos que construir uma nova instância de uma classe Integer. Esta classe Integer é uma classe invólucro e serve especialmente para os casos em que precisamos passar um valor primitivo para métodos que requerem referências a objetos.

2 - Entendendo o autoboxing


Façamos um teste agora. Experimente alterar as chamadas ao método add para esta nova versão:

// adiciona itens na lista
valores.add(34);
valores.add(10);
valores.add(87);


Compile e execute o código. Você verá que estas duas etapas ocorrem sem problemas. Agora o compilador está inserindo o tipo primitivo na classe invólucro automaticamente. Para nós, desenvolvedores, isso significa alguns minutos de digitação a menos. É claro que os bytecodes resultantes serão os mesmos, com ou sem autoboxing.

3 - Apresentando o unboxing

Veja agora o método get da classe ArrayList:

public E get(int index)

Este método nos permite acessar um elemento na lista mediante um índice. Porém, ainda que tenhamos adicionado int, float, double ou outro tipo primitivo, o retorno do método será uma referência a um objeto. Dessa forma, o segundo elemento da ArrayList poderia ser obtido assim:

// obtém o 2º elemento
Integer elem = (Integer)(valores.get(1));
System.out.println(elem.intValue());


Aqui criamos uma nova instância da classe Integer e atribuímos a ela o resultado de uma chamada ao método get. A conversão de Object para Integer é explícita, já que um Object não é um Integer. Finalmente o valor primitivo é extraído com uma chamada ao método intValue da classe Integer.

Veja agora como reduzir boa parte deste código:

// obtém o 2º elemento
int elem = valores.get(1);
System.out.println(elem);


Agora o compilador se encarrega de criar a classe invólucro, converter Object em Integer e extrair o tipo primitivo sem qualquer esforço de nossa parte. Isso é unboxing.

4 - Resumindo

A conversão de um tipo primitivo para o tipo referência correspondente é chamada de boxing e a conversão do tipo referência para o tipo primitivo correspondente é chamada de unboxing.
 
 
Arquivo de Códigos - Página Inicial
Veja dicas, truques e anotações de AJAX
Veja dicas, truques e anotações de outras linguagens
Java - Substituir todos os espaços de uma string por sublinhados (underline)
Java - Como saber se o usuário pressionou o Enter do teclado alfanúmerico ou numérico?
JSP (Java Server Pages) - Recuperando valores de cookies (forma fácil)
Ruby - Usando constantes em Ruby
Java - Como obter o índice do item selecionado em um JComboBox
Java - Definindo como os componentes serão redimensionados para ocupar seus espaços nas células de um GridBagLayout
VB.NET - Como escrever em um arquivo texto usando os métodos Write e WriteLine da classe StreamWriter
Java - O modificador synchronized
Java - Como listar todos os métodos de uma classe ou interface em tempo de execução
C - Aprenda a usar a instrução switch em C

       

http://www.arquivodecodigos.net
:: Arquivo de Códigos - Softwares e Consultoria em Programação ::
Todo o conteúdo deste site, quando não devidamente observado, pertence a seus idealizadores e não
poderá ser usado para outras finalidades senão estudo e aprimoramento de técnicas de programação.
Certifique-se de ler as notas legais antes de proceder com o acesso e leitura do
conteúdo disponibilizado nestas páginas.

Fale Conosco: (62) 3261-7018 / (62) 8185-0734

Desenvolvedor Responsável: Osmar J. Silva

Página Inicial Contatos Pesquisar Mapa do Site