Estou errado? (Sobre generics)

ArrayList l = new ArrayList(); -> Cria array somente de OBJETOS (DEFAULT)

ArrayList l -> O uso das generics, servem para expecificar o tipo da array, no exemplo… de string… logo funcionaria com etc.

Esta certo isso ? Serve para qlqer tipo de coleção ?

Abraços,

sim.

Não esta correto não, este codigo não compila:

private List<int> a = new List<int>();

Vc não pode utilizar generic para tipos primitivos, o que vc pode fazer é utlizar seu wapper

private List<Integer> a = new List<Integer>();

Funciona com String prq o mesmo é um objeto não um tipo primitivo.

deslize.

So corrigindo…

List l = new List();

Tambem nao compila porque List e interface.
o certo seria:
List l = new ArrayList();

Voce pode usar um super tipo apenas na declaraca do tipo base e nao para o tipo Generico.
Por exemplo, isso nao compila:

List l = new ArrayList();

mesmo String sendo subtipo de Object

Já que uma resposta está corrigindo/complementando a outra, vamos lá:

Na verdade você pode fazer isso, usando coringa.

Exemplo:

List<? extends Object> l = new ArrayList<String>();

Além disso, você tb pode colocar até mesmo supertipo da declaração usando coringa.

Exemplo:

List<? super String> l = new ArrayList<Object>();

[]'s