Al usar genéricos, los parámetros de tipo no pueden ser estáticos. Como la variable estática se comparte entre los objetos, el compilador no puede determinar qué tipo utilizar. Considere el siguiente ejemplo si se permitieran parámetros de tipo estático.
Ejemplo
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;
}
}
Como stringBox y integerBox ambos tienen una variable de tipo estático inicial, su tipo no se puede determinar. Por tanto, no se permiten parámetros de tipo estático.