O que significa em Java usar isto ou ou o que quer que seja?
Por exemplo, diferença entre ter isto
List<String> strings = new ArrayList();
ou ter isto:
List strings = new ArrayList();
Obrigado.
O que significa em Java usar isto ou ou o que quer que seja?
Por exemplo, diferença entre ter isto
List<String> strings = new ArrayList();
ou ter isto:
List strings = new ArrayList();
Obrigado.
Um exemplo:
[code]public class MeuObjeto {
private T interno = null;
public T retornaTipo(){
return interno;
}
}[/code]
[code]public class MeuObjetoTipado extends MeuObjeto{
}[/code]
Se vc chamar o método MeuObjetoTipado.retornaTipo vc vai ver que o tipo de retorno não é mais T, e sim TipoDeObjeto…
Mais Generics é bem maior que isso…
Quando você utiliza Generics (que é o List), você tem certeza de que está inserindo e utilizando os objetos do tipo correto na lista.
Por exemplo, sem generics, eu posso fazer o seguinte:
List lista = new ArrayList();
lista.add("Cachorro");
lista.add(new Cachorro());
Cachorro bidu = (Cachorro) lista.get(0); // erro!!!
Cachorro rex = (Cachorro) lista.get(1);
Vai ocorrer um erro em tempo execução na penúltima linha.
Já com Generics, a mesma coisa não acontece:
List<Cachorro> lista = new ArrayList<Cachorro>();
lista.add("Cachorro"); // erro de compilação!
lista.add(new Cachorro());
O código sequer compila.
Resumindo, Generics é, dentre outras coisas, um método de você ter certeza de que está fazendo a coisa certa.
Este tutorial pode lhe ajudar a entender mais sobre Generics: http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
Na verdade vc só diz ao compilador que os elementos serão String, mas não garante isso em tempo de execução.
Uma vantagem básica de usar generics éque na hora de iterar ou recuperar um elemento, vc n precisa fazer cast pra String, pode ler atribuir o elemento diretamente a uma variavel String.