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.