Génériques Java - Aucun champ statique

En utilisant des génériques, les paramètres de type ne sont pas autorisés à être statiques. Comme la variable statique est partagée entre les objets, le compilateur ne peut pas déterminer le type à utiliser. Prenons l'exemple suivant si les paramètres de type statique étaient autorisés.

Exemple

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

Comme stringBox et integerBox ont tous deux une variable de type statique en étoile, son type ne peut pas être déterminé. Par conséquent, les paramètres de type statique ne sont pas autorisés.