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:
List<String> lista = new ArrayList<String>();
Map<Integer, Pessoa> map = new TreeMap<Integer, Pessoa>();
Agora pode ficar assim:
List<String> lista = new ArrayList<>();
Map<Integer, Pessoa> map = new TreeMap<>();
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>
Map<Integer, Pessoa> map1 = new TreeMap<>();
map1.put(0, new PessoaFisica());
Map<Integer, String> outroMap = new TreeMap(map);
Com o uso do diamante o compilador não aceita a declaração:
Map<Integer, Pessoa> map1 = new TreeMap<>();
map1.put(0, new PessoaFisica());
Map<Integer, String> outroMap = new TreeMap<>(map);
Os exemplos abaixo também são aceitos, mas para mim o melhor mesmo é parametrizar o tipo correto.
List<?> list1 = new ArrayList<>();
List list2 = new ArrayList<>();
List<?> list3 = new ArrayList();
Se a List é declaração com ?, o compilador entende que é uma lista de Object. É possivel usar extends e o super também.
Map<Integer, ? extends Pessoa > map4 = new TreeMap<>();
Map<Integer, ? super Pessoa > map5 = new TreeMap<>();
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
Share


Um comentário

  1. #
    Rodrigo
    setembro 12th, 2012 at 10:32

    Exelente matéria! Gostei muito do site, vo espalhar sobre ele na facul.

    Abrçs!

    Responda a esse comentário

Deixe um comentário