Home >Java >javaTutorial >Type Inference with the Diamond Operator

Type Inference with the Diamond Operator

Susan Sarandon
Susan SarandonOriginal
2024-12-31 13:11:14215browse

Inferência de Tipos com o Operador Losango

1. Introduction to the Diamond Operator

  • Introduced in JDK 7 to reduce verbosity when creating instances of generic classes.
  • Allows the compiler to infer generic types from the context, eliminating the need to repeat type arguments.

2. Declaration Example Before 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");

Disadvantage: Generic types need to be repeated both in declaration and instance creation.

. Using the Rhombus Operator in JDK 7

// Criação de uma instância usando o operador losango
TwoGen<Integer, String> tgOb = new TwoGen<>(42, "testing");

The operator <> asks the compiler to infer the type arguments based on the variable declaration (TwoGen).

4. General Form
General syntax for creating an instance of a generic class:

nome-classe<lista-arg-tipo> nome-var = new nome-classe<>(lista-arg-cons);

Example:

TwoGen<Double, Boolean> example = new TwoGen<>(3.14, true);

5. Inference in Methods
Type inference also works for methods that take generic classes as a parameter.
Example:

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

The types of the new TwoGen<>(...) parameter are automatically inferred.

6. Benefits of the Losango Operator
Reducing verbosity: Especially useful for generic classes with many type parameters.
Readability: Simplifies complex statements.

7. Compatibility
The diamond operator does not work in Java versions prior to JDK 7.
Examples in old books and codes use the full syntax to maintain compatibility with all Java compilers that support generics.

8. Good Practices
Use the diamond operator in projects with JDK 7 support to optimize and make code more readable.
Prefer the full syntax in learning examples or legacy projects for clarity.

The above is the detailed content of Type Inference with the Diamond Operator. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn