Pular para o conteúdo

Operador diamante no Java7

Olá,

Bom, já faz quase um ano que escrevi dois posts sobre java 7, um sobre arquivos e outro sobre switch e catch multiplos. Hoje o post é sobre o diamante <>, o operador.

O uso desse operador economiza alguns toques no teclado, brincadeira, na verdade elimina uma redundância na parametrização de tipos.

Antes era assim:
[sourcecode lang=java]List lista = new ArrayList();
Map map = new TreeMap();[/sourcecode]
Agora pode ficar assim:

[sourcecode lang=java]List lista = new ArrayList<>();
Map map = new TreeMap<>();[/sourcecode]

Vamos economizar digitação, mas não economize em usar o <>,  é sempre bom por o <> para evitar alguns erros.

Veja que no exemplo abaixo que se omitimos o diamante o  compilador não reclama, mas tem um erro conceitual pois queremos uma variável do tipo Map<Integer, String>

[sourcecode lang=java]Map map1 = new TreeMap<>();
map1.put(0, new PessoaFisica());

Map outroMap = new TreeMap(map);[/sourcecode]
Com o uso do diamante o compilador não aceita a declaração:
[sourcecode lang=java]Map map1 = new TreeMap<>();
map1.put(0, new PessoaFisica());

Map outroMap = new TreeMap<>(map);[/sourcecode]
Os exemplos abaixo também são aceitos, mas para mim o melhor mesmo é parametrizar o tipo correto.
[sourcecode lang=java]List list1 = new ArrayList<>();
List list2 = new ArrayList<>();
List list3 = new ArrayList();[/sourcecode]
Se a List é declaração com ?, o compilador entende que é uma lista de Object.

É possivel usar extends e o super também.
[sourcecode lang=java]Map map4 = new TreeMap<>();
Map map5 = new TreeMap<>();[/sourcecode]
Nesse link tem um exemplo de teste do JDK

O Eclipse Juno já completa diretamente com <> com o uso de ctrl + espaço se tiver configurado para trabalhar com a sintaxe Java 7.

até mais,

Roberto

1 comentário em “Operador diamante no Java7 ”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *