Метод getTypeParameters
Метод getTypeParameters класса Class возвращает
массив объектов TypeVariable, которые описывают
параметры типа (type parameters), объявленные в обобщённом
классе, интерфейсе или методе. Если у класса нет параметров
типа, метод возвращает пустой массив. Параметров у метода нет.
Каждый элемент массива TypeVariable содержит информацию
об имени параметра типа (например, T или E)
и его границах (bounds). Порядок элементов соответствует
порядку объявления параметров типа в исходном коде.
Синтаксис
class.getTypeParameters()
Пример
Давайте получим параметры типа обобщённого класса
Box с двумя параметрами типа и выведем их имена:
import java.lang.reflect.TypeVariable;
public class Main
{
public static void main(String[] args)
{
Class<Box> cls = Box.class;
TypeVariable<Class<Box>>[] params = cls.getTypeParameters();
for (TypeVariable<Class<Box>> param : params)
{
System.out.println(param.getName());
}
}
}
class Box<T, E>
{
}
Результат выполнения кода:
"T"
"E"
Пример
Давайте проверим, что у обычного класса без параметров типа метод возвращает пустой массив:
import java.lang.reflect.TypeVariable;
public class Main
{
public static void main(String[] args)
{
Class<String> cls = String.class;
TypeVariable<Class<String>>[] params = cls.getTypeParameters();
System.out.println(params.length);
}
}
Результат выполнения кода:
0
Пример
Давайте получим параметры типа обобщённого класса и
выведем их границы через метод getBounds:
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
public class Main
{
public static void main(String[] args)
{
Class<Box> cls = Box.class;
TypeVariable<Class<Box>>[] params = cls.getTypeParameters();
for (TypeVariable<Class<Box>> param : params)
{
Type[] bounds = param.getBounds();
System.out.println(param.getName() + ": " + bounds[0].getTypeName());
}
}
}
class Box<T extends Number, E>
{
}
Результат выполнения кода:
"T: java.lang.Number"
"E: java.lang.Object"
Смотрите также
-
класс
Class,
который представляет классы во время выполнения -
метод
getName,
который возвращает полное имя класса -
метод
getSimpleName,
который возвращает простое имя класса -
метод
isAssignableFrom,
который проверяет совместимость типов