Учебники

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 имеют переменную статического типа, ее тип не может быть определен. Следовательно, параметры статического типа не допускаются.