Duvida em generics

4 respostas
M

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>();

4 Respostas

O

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

Tchello

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!

felipehand

É 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.

O

Desculpe amigos na verdade o que aceita qualquer coisa que extende de Object

[list]List l = new ArrayList(); [/list]

Criado 13 de setembro de 2009
Ultima resposta 14 de set. de 2009
Respostas 4
Participantes 4