O que é Generics???
É uma classe genérica?
Mais pra que serve?
Onde usamos?
Como faz?
É muito usada? :?:
O que é Generics???
É uma classe genérica?
Mais pra que serve?
Onde usamos?
Como faz?
É muito usada? :?:
Generics são “specifics”
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+
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>();
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