Em vez de termos de repetir todos os tipos parametrizados, é suficiente usarmos <>. Na documentação isso é chamado de "diamond" (losango), em alusão à forma do novo operador.
// Requer Java 7
import java.util.*;
class TesteNotacaoAbreviada {
public static void listMap (Map<String, String> map) {
for (Map.Entry<String, String> entry : map.entrySet()) {
}
}
public static void main (String[] args) {
// Note que não é necessário escrever "new HashMap<String, String>()"
Map<String, String> traducao = new HashMap<>(); // Nem aqui é preciso escrever "new TreeMap<String, String>()"
traducao = new TreeMap<>();
// A notação abreviada funciona também para passagem de parâmetros, mas
// é bem mais difícil fazê-la funcionar adequadamente. No caso abaixo,
// o compilador acha que o tipo que está sendo passado é new TreeMap<Object,Object>
// e emite um erro de compilação.
listMap (new TreeMap<>());
}
}