Java Generics - без статического поля

При использовании дженериков параметры типа не могут быть статическими. Поскольку статическая переменная является общей для объекта, компилятор не может определить, какой тип использовать. Рассмотрим следующий пример, если разрешены параметры статического типа.

пример

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

Поскольку и stringBox, и integerBox имеют переменную статического типа с фиксированным статусом, ее тип не может быть определен. Следовательно, параметры статического типа не допускаются.