Я думаю, это потому, что Java не определяет тип параметризованного класса статически.
Так же, как это не компилируется:
Class<?> c1 = ArrayList<String>.class;
И это не так, как наверхупроблема разрешения типа List
- это интерфейс:
Class<?> c2 = List<String>.class;
Но это компилируется, и вы, вероятно, можете сделать что-то подобное:
public class MyList implements List<String> {
... the List's methods to implement ...
}
// and later in the code:
Class<?> c3 = MyList.class;