Всем здравствуйте.
Есть некоторый класс с параметризированным типом Storage<T>.
Все три инструкции ниже приводят к warning. unchecked cast.
Storage<User> storage = ctx.getBean("storageMemory");
Storage<User> storage = ctx.getBean(Storage.class);
Storage<User> storage = ctx.getBean("storageMemory", Storage.class);
Собственно вопрос:
Как получить bean generic-типа без unckecked? Аннотации или xml - значения не имеет.
Есть ли какой-то вариант кроме как сделать storage полем некоторого класса-контейнера с autowired?
Да, это один из вариантов. Но представь, что у тебя в системе 50 моделей данных. Придётся писать 50 классов, расширяющих Storage, содержащих много повторяющегося кода (нарушаем DRY).
ну повторяющемуся коду место в абстрактном классе. но да если моделей много - будет очень не приятно.
@Configuration
public class MyConfiguration {
@Bean
public Storage<User> userStorage() {
return new Storage<Person>();
}
@Bean
public Storage<Customer> customerStorage() {
return new Storage<Customer>();
}
....
}