Generics o que é?

3 respostas
J

O que é Generics???

É uma classe genérica?

Mais pra que serve?
Onde usamos?
Como faz?
É muito usada? :?:

3 Respostas

I

Generics são “specifics” :grin: Desculpa o trocadilho. De modo geral é a maneira de descrever que tipos de elementos que serão alocados em collections, maps e sets conterão. A idéia e de se evitar ClassCastException´s durante o tempo de execução de uma aplicação, pois com certas “marcações” em tempo de compilação é possível verificar a legitimibilidade dos dados que estarão sendo inseridos. Sim, tu podes definir teus tipos genericos que são um passo mais adiante e um pouco mais complexo. É interessante, mais informações aqui

T+

G

Um bom exemplo é uma coleção. Quando recuperamos elementos de uma coleção eles vem como Object. Para evitar o emaranhado de casts, tipificamos a coleção:

List<Cachorro> cachorros = new ArrayList<Cachorro>();
J

Generic é uma funcionalidade que permite especificar tipos genericos, dentro de uma classe, esses tipos depois podem ser especificados durante o uso da classe...

ex.:

public class MinhaClasse<E>{
   public void metodo(E obj){
       //faz alguma coisa
   }
}

public class Classe1{

}

public class Classe2{

}

MinhaClasse<Classe1> m1 = new MinhaClasse<Classe1>();
m1.metodo(new Classe1());

MinhaClasse<Classe2> m2 = new MinhaClasse<Classe2>();
m2.metodo(new Classe2());

Isso evita que você tenha que usar um tipo especifico para o parametro do metodo(), e tenha que fazer um cast depois, sem generics seria isso:

public MinhaClasse{
   public void metodo(Object obj){
      //faz alguma coisa, mas precisa de um cast
   }
}

Isso é usado principalmente em coleções, mas não se restringe a elas.
Veja o uso em coleções:

public class Usuario{

}

List<Usuario> lista = new ArrayList<Usuario>();
lista.add(new Usuario());

Usuario usu = lista.get(0);

Nesse caso, a coleção só aceita objetos do tipo Usuario, e não é necessario cast na hora de pegar os objetos da lista.

Mais informações em:

http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html

Criado 25 de outubro de 2006
Ultima resposta 25 de out. de 2006
Respostas 3
Participantes 4