Programação
 › Algoritmo  › C/C++  › Java
Web
 › HTML/XHTML  › JavaScript  › PHP
Sistema Operacional
 › Comandos de DOS  › Windows  › Linux  › Mac/BSD
Office
 › Word / Writer  › Excel / Calc
Áreas do Site
 › Download  › Fórum  › Blog
Recomendamos
Computadores e Informática em Lisboa
TI Expert » Programação » Java » Generics - Introdução

Generics

No artigo anterior de Java, vimos como usar typecast e instanceof. Aqui, veremos uma pequena introdução de Generics ou programação genérica, na qual será muito importante quando formos tratar de classes e interfaces de coleção como, por exemplo, a classe Vector.

Generics, ou programação genérica, serve para determinar para o compilador, qual tipo de classe deve ser interpretada.

Por exemplo, vamos imaginar que será criada uma classe chamada Aparelho que irá conter um objeto de alguma outra classe.

Para que essa classe possa aceitar qualquer tipo de classe, devemos fazer uso de generics.

Generics é indicado como um identificador entre os sinais de maior e menor (<>).

Criar classes usando generics

Para criar uma classe usando generics, basta que logo após o nome da classe coloquemos o indicador genérico. Esse indicador genérico é simplesmente uma letra na qual será substituída dentro da classe no momento da execução.

package tiexpert;

public class Aparelho <T> {
    T objeto;

    public Aparelho(T objeto) {
        this.objeto = objeto;
    }

    public T getObjeto() {
        return objeto;
    }

    public void setObjeto(T objeto) {
        this.objeto = objeto;
    }
}

Como a letra T identifica um tipo genérico, ela será substituída por qualquer classe.

Vamos imaginar agora que temos duas  classes distintas. A classe TV:

package tiexpert;

public class TV {
    int tamanho;
    int canal;
    int volume;
    boolean ligada;

    public TV(int tamanho, int canal, int volume, boolean ligada) {
        this.tamanho = tamanho;
        this.canal = canal;
        this.volume = volume;
        this.ligada = ligada;
    }
    
    // métodos get e set
    
}

E a classe Radio:

package tiexpert;

public class Radio {
    public static int AM = 1;
    public static int FM = 2;
    private float frequencia;
    private int volume;
    private int banda;

    public Radio(float frequencia, int volume, int banda) {
        this.frequencia = frequencia;
        this.volume = volume;
        this.banda = banda;
   }
   
   // métodos get e set
   
}

Instanciar uma classe genérica

Se fossemos criar um programa que usa as duas classes de aparelhos acima, faríamos:

package tiexpert;

public class MinhaClasse {
    public static void main(String[] args) {
        Aparelho<TV> aparelho1 = new Aparelho<TV>(new TV(29, 0, 0, false));
        Aparelho<Radio> aparelho2 = new Aparelho<Radio>(new Radio(88.1f, 0, Radio.FM));
        System.out.println(aparelho1.getObjeto().getClass());
        System.out.println(aparelho2.getObjeto().getClass());
    }
}
Faça o Download deste Código

Perceba o seguinte: sem o uso de generics, o compilador não conseguiria saber qual a diferença entre aparelho1 e aparelho2, pois ele os trataria da mesma forma. Nesse caso, seria obrigatório o uso de typecast para determinar ao compilador que dado está sendo processado.

Se pensarmos em uma aplicação muito grande, além de ficar cansativo ter que usar typecast toda vez que fossemos usar um aparelho, seria muito provável que erraríamos em algum momento.

Java usa uma pequena convenção de nomenclatura para as letras de identificação de generics (que são vastamente utilizadas no Framework de coleções Java), sendo:

  • E - Elemento
  • K - Chave
  • N - Número
  • T - Tipo
  • V - Valor

Generics é um assunto bastante extenso com vários tópicos que podem ser abordados, dentre os quais podemos citar:

  • Multiplos tipos genéricos. Ex.: <T, E, N>;
  • Tipos genéricos limitados. Ex.: <U extends Number>;
  • Wildcards;
  • e Subtipos;

O intuito deste artigo é apenas introduzir um conceito geral de programação genérica (generics) para compreensão de classes e métodos que utilizam generics.

Creative Commons License
Autor: Denys William Xavier
Este artigo está sob Licença Creative Commons.
Fonte: The Java™ Tutorials.

Faça o download da versão em PDF Indique nosso site Gostou?
Indique nosso site!
Este artigo foi
lido 58657 vezes
Bookmark e Compartilhe

Páginas Relacionadas

Enquete
O Google Chrome OS irá desbancar o Microsoft Windows 7?
» ProgramaçãoAlgorítmo | C/C++ | Java

» WebHTML/XHTML | JavaScript | PHP

» Sistema OperacionalComandos de DOS | Windows | Linux | Mac/BSD

» OfficeWord/Wirter | Excel/Calc

» Áreas do SiteDownloads | Fórum | Blog