1. Introdução ao Operador Losango (Diamond Operator)
- Introduzido no JDK 7 para reduzir a verbosidade ao criar instâncias de classes genéricas.
- Permite que o compilador infira os tipos genéricos a partir do contexto, eliminando a necessidade de repetir os argumentos de tipo.
2. Exemplo de Declaração Antes do JDK 7
// Classe genérica com dois tipos
class TwoGen<T, V> {
T ob1;
V ob2;
TwoGen(T o1, V o2) {
ob1 = o1;
ob2 = o2;
}
}
// Criação de uma instância antes do JDK 7
TwoGen<Integer, String> tgOb = new TwoGen<Integer, String>(42, "testing");
Desvantagem: Os tipos genéricos precisam ser repetidos tanto na declaração quanto na criação da instância.
. Uso do Operador Losango no JDK 7+
// Criação de uma instância usando o operador losango
TwoGen<Integer, String> tgOb = new TwoGen<>(42, "testing");
O operador <> solicita ao compilador que infira os argumentos de tipo com base na declaração da variável (TwoGen).
4. Forma Geral
Sintaxe geral para criar uma instância de uma classe genérica:
nome-classe<lista-arg-tipo> nome-var = new nome-classe<>(lista-arg-cons);
Exemplo:
TwoGen<Double, Boolean> example = new TwoGen<>(3.14, true);
5. Inferência em Métodos
A inferência de tipos também funciona para métodos que recebem classes genéricas como parâmetro.
Exemplo:
// Adicionado à classe TwoGen
boolean isSame(TwoGen<T, V> o) {
return ob1 == o.ob1 && ob2 == o.ob2;
}
// Chamando o método usando o operador losango
if (tgOb.isSame(new TwoGen<>(42, "testing"))) {
System.out.println("Same");
}
Os tipos do parâmetro new TwoGen<>(...) são inferidos automaticamente.
6. Benefícios do Operador Losango
Redução de verbosidade: Especialmente útil para classes genéricas com muitos parâmetros de tipo.
Legibilidade: Simplifica declarações complexas.
7. Compatibilidade
O operador losango não funciona em versões do Java anteriores ao JDK 7.
Exemplos em livros e códigos antigos usam a sintaxe completa para manter a compatibilidade com todos os compiladores Java que suportam genéricos.
8. Boas Práticas
Use o operador losango em projetos com suporte ao JDK 7+ para otimizar e tornar o código mais legível.
Prefira a sintaxe completa em exemplos de aprendizado ou projetos legados para maior clareza.
Top comments (0)