map = new HashMap<Class<? extends AbstractDAO<K,V>>, AbstractDAO<K,V>>);
не допускаетсяКак сделать hashmap, который содержит SomeType <K,V>?
Есть ли способ, чтобы добиться чего-то вроде этого?
map = new HashMap<Class<? extends AbstractDAO<K,V>>, AbstractDAO<K,V>>);
не допускаетсяКак сделать hashmap, который содержит SomeType <K,V>?
Есть ли способ, чтобы добиться чего-то вроде этого?
Как следующее:
class Test<K, V> {
Map<K, V> map = new HashMap<Class<? extends AbstractDAO<K,V>>, AbstractDAO<K,V>>();
}
Конечно, вы можете, если вы объявляете K
и V
как типов.
Здесь я объявил их метод типов:
public static class AbstractDAO<K, V> {
}
public static <K, V> void typedMethod() {
Map<Class<? extends AbstractDAO<K, V>>, AbstractDAO<K, V>> map
= new HashMap<Class<? extends AbstractDAO<K, V>>, AbstractDAO<K, V>>();
}
Или, если вы не хотите объявлять типы, оставить все «неизвестные» с групповыми символами везде:
public static void method() {
Map<Class<? extends AbstractDAO<?, ?>>, AbstractDAO<?, ?>> map = new HashMap<Class<? extends AbstractDAO<?, ?>>, AbstractDAO<?, ?>>();
}
Все приведенные выше коды компилируются.
Вам нужны «K» и «V». Вы объявили их в своем классе? –
нет, потому что они являются переменными .. я не могу использовать определенный тип для K и V, поскольку DAO, которые расширяют этот абстрактный класс, могут иметь тип AbstractDAO, AbstractDAO и т. Д. –
osh