@fred
Чтобы узнать generic type у Java интерфейса, можно использовать рефлексию. Вот пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public interface MyInterface<T> { } public class Main { public static void main(String[] args) { Type type = MyInterface.class.getGenericInterfaces()[0]; ParameterizedType paramType = (ParameterizedType) type; Type[] arguments = paramType.getActualTypeArguments(); Class<?> genericType = (Class<?>) arguments[0]; System.out.println("Generic type: " + genericType.getName()); } } |
В этом примере мы получаем массив интерфейсов, реализованных классом MyInterface
. Затем мы назначаем Type
первому интерфейсу (в нашем случае MyInterface
) и проверяем, является ли этот тип параметризованным типом (ParameterizedType
). Если да, мы получаем фактический тип аргумента с помощью метода getActualTypeArguments()
и преобразуем его в Class<?>
.
В результате выполнения кода будет выведено название generic type:
1
|
Generic type: java.lang.String |
В этом примере generic type интерфейса MyInterface
- это String
.