Java Generics - Inferencia de tipos

La inferencia de tipo representa la capacidad del compilador de Java para observar la invocación de un método y su declaración correspondiente para verificar y determinar los argumentos de tipo. El algoritmo de inferencia comprueba los tipos de argumentos y, si está disponible, se devuelve el tipo asignado. Los algoritmos de inferencia intentan encontrar un tipo específico que pueda cumplir con todos los parámetros de tipo.

El compilador genera una advertencia de conversión sin comprobar en caso de que no se utilice la inferencia de tipo.

Sintaxis

Box<Integer> integerBox = new Box<>();

Dónde

  • Box - Box es una clase genérica.

  • <> - El operador de diamante denota inferencia de tipo.

Descripción

Usando el operador de diamante, el compilador determina el tipo de parámetro. Este operador está disponible desde la versión Java SE 7 en adelante.

Ejemplo

Cree el siguiente programa Java utilizando cualquier editor de su elección.

GenericsTester.java

package com.tutorialspoint;

public class GenericsTester {
   public static void main(String[] args) {
      //type inference   
      Box<Integer> integerBox = new Box<>();
      //unchecked conversion warning
      Box<String> stringBox = new Box<String>();

      integerBox.add(new Integer(10));
      stringBox.add(new String("Hello World"));

      System.out.printf("Integer Value :%d\n", integerBox.get());
      System.out.printf("String Value :%s\n", stringBox.get());
   }
}

class Box<T> {
   private T t;

   public void add(T t) {
      this.t = t;
   }

   public T get() {
      return t;
   }   
}

Esto producirá el siguiente resultado.

Salida

Integer Value :10
String Value :Hello World