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