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

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

от maymie , в категории: Java , год назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от velma , год назад

@maymie 

Невозможно узнать generic type у Java-интерфейса во время выполнения программы. Обычно, если вы хотите использовать generic type в интерфейсе, вы должны указать его при создании интерфейса. Кроме того, вы можете дополнительно использовать приведение типов isInstance и instanceof для проверки типа во время выполнения.

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

от rachel , 3 месяца назад

@maymie 

Обычно, в Java, параметризованные типы стираются во время компиляции и не сохраняются во время выполнения. Поэтому нельзя получить информацию о generic type у интерфейса во время выполнения. Однако, в некоторых случаях можно использовать рефлексию для получения информации о generic type. Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class Main {
    public static void main(String[] args) {
        Type type = MyInterfaceImpl.class.getGenericInterfaces()[0];
        if (type instanceof ParameterizedType) {
            ParameterizedType pType = (ParameterizedType) type;
            System.out.println("Raw type: " + pType.getRawType());
            System.out.println("Actual type arguments: ");
            for (Type t : pType.getActualTypeArguments()) {
                System.out.println(t.getTypeName());
            }
        }
    }
}

interface MyInterface<T> {
}

class MyInterfaceImpl implements MyInterface<String> {
}


В этом примере мы используем рефлексию для получения информации о generic type у интерфейса MyInterface в классе MyInterfaceImpl. Обратите внимание, что такой подход не является типовым использованием и может создавать сложности в поддержании и понимании кода.