Java Generics - Kein statisches Feld
Bei Verwendung von Generika dürfen Typparameter nicht statisch sein. Da die statische Variable von den Objekten gemeinsam genutzt wird, kann der Compiler nicht bestimmen, welcher Typ verwendet werden soll. Betrachten Sie das folgende Beispiel, wenn statische Typparameter zulässig waren.
Beispiel
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;
}
}
Da stringBox und integerBox beide eine starre statische Typvariable haben, kann ihr Typ nicht bestimmt werden. Daher sind statische Typparameter nicht zulässig.