Lädt...


🔧 Inferência de Tipos com o Operador Losango


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

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.

...

🔧 Inferência de Tipos com o Operador Losango


📈 122.66 Punkte
🔧 Programmierung

🔧 Dica C#: Use var para Tipos Evidentes, mas Prefira Tipos Explícitos para Tipos Ambíguos


📈 59.63 Punkte
🔧 Programmierung

🔧 Item 61: Dê preferência aos tipos primitivos em vez dos tipos primitivos empacotados


📈 39.76 Punkte
🔧 Programmierung

🔧 Pergunte ao especialista - Operador New


📈 26.13 Punkte
🔧 Programmierung

🔧 Operador Ternario ?: en C#


📈 26.13 Punkte
🔧 Programmierung

🔧 Operador de atribuição


📈 26.13 Punkte
🔧 Programmierung

🔧 Como construir um operador HPA baseado na fila do RabbitMQ no Kubernetes


📈 26.13 Punkte
🔧 Programmierung

🔧 Presentación del Operador LMS Moodle


📈 26.13 Punkte
🔧 Programmierung

🔧 Aprende a utilizar el operador ternario en JavaScript


📈 26.13 Punkte
🔧 Programmierung

🔧 Dominando o Operador in no JavaScript


📈 26.13 Punkte
🔧 Programmierung

🔧 Di Adiós a Try/Catch con Este Sorprendente Operador ECMAScript 🚀


📈 26.13 Punkte
🔧 Programmierung

🔧 O operador ?


📈 26.13 Punkte
🔧 Programmierung

🔧 O operador new


📈 26.13 Punkte
🔧 Programmierung

🔧 Desvendando os Tipos de Dados SQL: Como Escolher o Melhor para Cada Situação


📈 19.88 Punkte
🔧 Programmierung

🔧 Genéricos só funcionam com tipos de referência


📈 19.88 Punkte
🔧 Programmierung

🔧 Estudos de Quality Assurance (QA) - Tipos de Testes


📈 19.88 Punkte
🔧 Programmierung

🔧 Item 62: Evite as strings onde outros tipos forem mais adequados


📈 19.88 Punkte
🔧 Programmierung

🔧 Cap 13 Tipos genéricos e fundamentos


📈 19.88 Punkte
🔧 Programmierung

🔧 Tipos Básicos em Kotlin


📈 19.88 Punkte
🔧 Programmierung

🔧 Tipos básicos do TypeScript - Parte 1


📈 19.88 Punkte
🔧 Programmierung

🔧 Tipos genéricos diferem de acordo com seus argumentos de tipo


📈 19.88 Punkte
🔧 Programmierung

🔧 Como classificar a sua linguagem - Introdução a sistema de tipos


📈 19.88 Punkte
🔧 Programmierung

🔧 Dica C#: Tipos Anônimos


📈 19.88 Punkte
🔧 Programmierung

🔧 Autoboxing e Encapsuladores de tipos


📈 19.88 Punkte
🔧 Programmierung

🔧 Tipos de Aprendizado de Máquina


📈 19.88 Punkte
🔧 Programmierung

🔧 Tipos Básicos em Kotlin - String Literals


📈 19.88 Punkte
🔧 Programmierung

🔧 Autoboxing e Encapsuladores de tipos


📈 19.88 Punkte
🔧 Programmierung

🔧 Priorize os tipos genéricos


📈 19.88 Punkte
🔧 Programmierung

🔧 Tipos Básicos em Kotlin - Strings


📈 19.88 Punkte
🔧 Programmierung

🔧 As enumerações Java são tipos de classe


📈 19.88 Punkte
🔧 Programmierung

🔧 #3 Tipos de Variáveis - Entendendo o JavaScript


📈 19.88 Punkte
🔧 Programmierung

🔧 Cuidados com transferência de tipos em Java


📈 19.88 Punkte
🔧 Programmierung

🔧 A Verdadeira Natureza dos Tipos Valor e Referência em .NET


📈 19.88 Punkte
🔧 Programmierung

🔧 Generics: Não use tipos brutos


📈 19.88 Punkte
🔧 Programmierung

matomo