Все мы помним про стирание типов (type erasure) в Java. Я уже описывал его. Да, компилятор стирает информацию об параметрах типа, но в некоторых случаях во время выполнения программы можно получить аргументы типа суперкласса. Для этого используется метод getGenericSuperclass(), который у нас есть аж с Java 1.5.
Читать далее Java getGenericSuperclass получаем параметры типа обобщения