Java 9: Simplifique Classes Anônimas Internas com o Operador Diamond
O operador diamond (<>) foi introduzido no Java 7 para tornar o código mais legível, mas não podia ser usado com classes internas anônimas. No Java 9, pode ser usado com classes anônimas também, simplificando código e melhorando legibilidade.
Código Antes do Java 9
public class Tester {
public static void main(String[] args) {
Handler<Integer> intHandler = new Handler<Integer>(1) {
@Override public void handle() { System.out.println(content); }
};
intHandler.handle();
Handler<? extends Number> intHandler1 = new Handler<Number>(2) {
@Override public void handle() { System.out.println(content); }
};
intHandler1.handle();
Handler<?> handler = new Handler<Object>("test") {
@Override public void handle() { System.out.println(content); }
};
handler.handle();
}
}
abstract class Handler<T> {
public T content;
public Handler(T content) { this.content = content; }
abstract void handle();
}
Saída
1
2
Test
Com Java 9: Usando <> com Classe Anônima
public class Tester {
public static void main(String[] args) {
Handler<Integer> intHandler = new Handler<>(1) {
@Override public void handle() { System.out.println(content); }
};
intHandler.handle();
Handler<? extends Number> intHandler1 = new Handler<>(2) {
@Override public void handle() { System.out.println(content); }
};
intHandler1.handle();
Handler<?> handler = new Handler<>("test") {
@Override public void handle() { System.out.println(content); }
};
handler.handle();
}
}
abstract class Handler<T> {
public T content;
public Handler(T content) { this.content = content; }
abstract void handle();
}
Saída
1
2
Test
O operador diamond em classes anônimas reduz verbosidade quando o tipo pode ser inferido do contexto.
Java
- Entendendo a Palavra-chave final em Java: Variáveis, Métodos e Classes
- Operador instanceof em Java: Guia Completo
- Dominando Classes Aninhadas e Internas em Java: Tipos, Exemplos e Boas Práticas
- Entendendo Classes Aninhadas Estáticas em Java: Uso, Diferenças e Exemplos
- Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
- Padrão Singleton em Java Explicado: Como Implementar e Usar com Segurança
- Dominando Reflection em Java: Inspecionando Classes, Métodos e Campos em Tempo de Execução
- Dominando Java ObjectOutputStream: Serialização, Métodos e Exemplos Práticos
- Dominando Java Generics – Construindo Código Reutilizável e Type-Safe
- Dominando Operações de Arquivo em Java com java.io – Criação, Leitura, Escrita e Exclusão