Как узнать generic type у java interface?

Пользователь

от fred , в категории: Java , 2 месяца назад

Как узнать generic type у java interface?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от elian.swift , 2 месяца назад

@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.