Type Inference with the Diamond Operator
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!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











Troubleshooting and solutions to the company's security software that causes some applications to not function properly. Many companies will deploy security software in order to ensure internal network security. ...

Solutions to convert names to numbers to implement sorting In many application scenarios, users may need to sort in groups, especially in one...

Field mapping processing in system docking often encounters a difficult problem when performing system docking: how to effectively map the interface fields of system A...

Start Spring using IntelliJIDEAUltimate version...

When using MyBatis-Plus or other ORM frameworks for database operations, it is often necessary to construct query conditions based on the attribute name of the entity class. If you manually every time...

Conversion of Java Objects and Arrays: In-depth discussion of the risks and correct methods of cast type conversion Many Java beginners will encounter the conversion of an object into an array...

How does the Redis caching solution realize the requirements of product ranking list? During the development process, we often need to deal with the requirements of rankings, such as displaying a...

Detailed explanation of the design of SKU and SPU tables on e-commerce platforms This article will discuss the database design issues of SKU and SPU in e-commerce platforms, especially how to deal with user-defined sales...
