Java getGenericSuperclass получаем параметры типа обобщения

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

Для лучшего понимания надо привести пример. Класс MySuperclass:

В дочернем классе в качестве аргумента типа укажем строку:

Пример программы, использующей метод getGenericSuperclass():

Запустим её на выполнение и в консоли увидим:

Как видим, в определённых случаях даже на этапе выполнения можно добыть информацию об аргументах типа в Java.

Аналогично можно получить аргументы типа из суперкласса интерфейса, но там уже нужно использовать метод public Type[] getGenericInterfaces().

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *