12.1: Novos Detalhes na Linguagem (Operador Diamante Melhorado)

Tópicos Principais:
Operador Diamante (<>):

  • Introduzido no Java 7 para reduzir código redundante
  • Permite substituir new ArrayList() por new ArrayList<>()
  • Limitação original: só funcionava na declaração de variáveis

Melhorias no Java 8:
Inferência de tipos ampliada para contextos adicionais
Agora funciona em:

  • Chamadas de métodos
  • Retornos de métodos
  • Argumentos de métodos

Casos de Uso:

  • repositorio.adiciona(new ArrayList<>()) - agora funciona
  • repositorio.adiciona(Collections.emptyList()) - também funciona
  • Não precisa mais de anotações explícitas de tipo

Comparação Java 7 vs Java 8:
Java 7 exigia:

repositorio.adiciona(new ArrayList());
repositorio.adiciona(Collections.emptyList());

Java 8 aceita:

repositorio.adiciona(new ArrayList<>());
repositorio.adiciona(Collections.emptyList());

JEP Relacionado:
JEP 101: Generalized Target-Type Inference
Link: http://openjdk.java.net/jeps/101

Ver OperadorDiamanteExemplo.java