@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. Обратите внимание, что такой подход не является типовым использованием и может создавать сложности в поддержании и понимании кода.