#spring #generics #types
#spring #общие #типы
Вопрос:
Я пытаюсь использовать Spring org.springframework.core.ResolvableType
для определения параметризованного типа во время выполнения как такового:
public class MyClass<T> implements MyInterface<T> {
private final Class<T> typeClass;
public CustomStateSerializer() {
ResolvableType type = ResolvableType.forClass(getClass());
ResolvableType genericType = type.getGeneric();
this.typeClass= (Class<T>) genericType.resolve();
}
}
...
new MyClass<MyType>();
К сожалению, genericType
приводит к ?
. Очевидно, что я неправильно его использую, и, похоже, я не могу найти хороших документов для решения.
Ответ №1:
Класс имеет только ссылку, на которую еще не определено. Таким образом, вы можете передать экземпляр, который уже будет иметь определенный:
ResolvableType type = ResolvableType.forClass(getClass(), this);
this.typeClass = type.getGeneric(0).resolve();
Комментарии:
1. Такого метода не существует
ResolvableType::forClass
.2. Он находится в репозитории Spring: github.com/spring-projects/spring-framework/blob /…
3. Оба
ResolvableType::forClass
требованияClass<?>
в качестве своих параметров. Нет такого метода, который принимал бы класс иT
экземпляр (this
).