Java Generics - wnioskowanie o typie

Wnioskowanie o typie reprezentuje zdolność kompilatora Java do spojrzenia na wywołanie metody i odpowiadającą jej deklarację w celu sprawdzenia i określenia argumentów typu. Algorytm wnioskowania sprawdza typy argumentów i, jeśli jest dostępny, zwracany jest przypisany typ. Algorytmy wnioskowania próbują znaleźć określony typ, który może spełnić wszystkie parametry typu.

Kompilator generuje niesprawdzone ostrzeżenie o konwersji w przypadku, gdy wnioskowanie o typie nie jest używane.

Składnia

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

Gdzie

  • Box - Box to klasa ogólna.

  • <> - Operator rombu oznacza wnioskowanie o typie.

Opis

Używając operatora diamentu, kompilator określa typ parametru. Ten operator jest dostępny od wersji Java SE 7 i nowszych.

Przykład

Utwórz następujący program Java za pomocą dowolnego wybranego edytora.

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

Spowoduje to następujący wynik.

Wynik

Integer Value :10
String Value :Hello World