DEV Community

FUNDAMENTOS JAVA
FUNDAMENTOS JAVA

Posted on

Inferência de Tipos com o Operador Losango

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");

Enter fullscreen mode Exit fullscreen mode

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");

Enter fullscreen mode Exit fullscreen mode

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);

Enter fullscreen mode Exit fullscreen mode

Exemplo:

TwoGen<Double, Boolean> example = new TwoGen<>(3.14, true);
Enter fullscreen mode Exit fullscreen mode

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");
}

Enter fullscreen mode Exit fullscreen mode

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.

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs