Java Generics - brak pola statycznego
Używając typów ogólnych, parametry typu nie mogą być statyczne. Ponieważ zmienna statyczna jest dzielona między obiektami, kompilator nie może określić, jakiego typu użyć. Rozważ poniższy przykład, jeśli dozwolone były statyczne parametry typu.
Przykład
package com.tutorialspoint;
public class GenericsTester {
public static void main(String[] args) {
Box<Integer> integerBox = new Box<Integer>();
Box<String> stringBox = new Box<String>();
integerBox.add(new Integer(10));
printBox(integerBox);
}
private static void printBox(Box box) {
System.out.println("Value: " + box.get());
}
}
class Box<T> {
//compiler error
private static T t;
public void add(T t) {
this.t = t;
}
public T get() {
return t;
}
}
Ponieważ stringBox i integerBox mają zmienną typu statycznego, nie można określić jej typu. Dlatego statyczne parametry typu nie są dozwolone.