Existe alguma diferença entre essas duas declarações? Pelos testes que eu fiz os dois funcionam iguais…
List<String> l = new ArrayList();
List<String> l = new ArrayList<String>();
Existe alguma diferença entre essas duas declarações? Pelos testes que eu fiz os dois funcionam iguais…
List<String> l = new ArrayList();
List<String> l = new ArrayList<String>();
Existe diferença sim.
Quando você declara sua lista assim:
Você esta tipando ela, de modo que só poderá ser adicionado Strings.
Quando você não tipa sua lista deixando assim:
Pode ser adicionado qualquer tipo de objeto que herda de Object
Oliveira, fiz esse teste de curioso e não funcionou não.
Ele apenas aceita qualquer tipo de objeto que herde de Object caso faça assim:
List lista = new ArrayList();
Ou assim:
List lista = new ArrayList<String>(); //mesmo especificando o tipo ele aceitará qualquer objeto.
Caso contrário ele aceitará somente Strings.
Pelo menos foi isso que meus testes indicaram (JVM 1.5 u18 ).
Alguém gostaria de complementar? Ficaria muito grato!
É verdade, declarei uma arraylist tipada com String e ela aceitou um Object.
Se eu estou flando merda, por nao ser um tipo primitivo String deve herdar de object.
Desculpe amigos na verdade o que aceita qualquer coisa que extende de Object
[list]List l = new ArrayList(); [/list]