Я заполняю объект HashMap парами типа <String, Class<Ancestor>>
, где Ancestor
- некоторый пользовательский класс.Идея заключается в создании объекта из имени микросервиса.
Я получаю ошибку компиляции, когда выдает следующее:
EDITED
map.put("some label", Descendant.class);
Очевидно, что класс HashMap
ожидает настоящий класс Ancestor
, а не любой класс Descendant
, который расширяет Ancestor
.
Поскольку у меня есть десятки различных классов-потомков (микросервисы), кто-нибудь делает?можете подсказать, как избежать этого ограничения с помощью HashMap?
Я пытался использовать Class<?>
вместо Class<Ancestor>
в объявлении HashMap.Но затем Eclipse выдает предупреждение о кастинге при вызове микросервиса
Class<Ancestor> a = (Class<Ancestor>) map.get("some label");
Странное предупреждение гласит:
Type safety: unchecked cast from Class <capture#151-of ?> to Class <Ancestor>