2013-07-10 3 views
0
map = new HashMap<Class<? extends AbstractDAO<K,V>>, AbstractDAO<K,V>>); 

не допускаетсяКак сделать hashmap, который содержит SomeType <K,V>?

Есть ли способ, чтобы добиться чего-то вроде этого?

+0

Вам нужны «K» и «V». Вы объявили их в своем классе? –

+0

нет, потому что они являются переменными .. я не могу использовать определенный тип для K и V, поскольку DAO, которые расширяют этот абстрактный класс, могут иметь тип AbstractDAO , AbstractDAO и т. Д. – osh

ответ

1

Как следующее:

class Test<K, V> { 
    Map<K, V> map = new HashMap<Class<? extends AbstractDAO<K,V>>, AbstractDAO<K,V>>(); 
} 
1

Конечно, вы можете, если вы объявляете 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<?, ?>>(); 
} 

Все приведенные выше коды компилируются.

Смежные вопросы