Cap 12 Apêndice: mais Java 8 com reflection, JVM, APIs e limitações
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

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