Предположим, есть следующая иерархия классов:
static interface A
{
void roll();
}
static class B implements A
{
@Override
public void roll() {
System.out.println("B");
}
}
static class C implements A
{
@Override
public void roll() {
System.out.println("C");
}
}
Требуется положить в HashMap следующее: map.put(Class
map.put(Class,List);
map.put(Class
Ошибка компиляции:
map.put(Class, List
Как это можно реализовать, если вообще такое возможно?
Ответ
Если я правильно понял вопрос, то нужно сделать так: List get(P key) {
return (List ) map.get(key);
} List put(Class key, List value) {
return (List ) map.put(key, value);
}
}
private static
И использовать этот метод следующим образом:
Map
UPDATE
Боюсь, то что вы хотите, нельзя сделать без создания дополнительного класса, который реализовывал бы данное ограничение.
Например так:
private static class CustomMap
@SuppressWarnings("unchecked")
public
@SuppressWarnings("unchecked")
public
Тогда,
CustomMapmap = new CustomMap<>() ;
map.put(C.class, new ArrayList
Но в данном решении есть существенные недостатки, одно из них это то, что CustomMap не реализовывает интерфейс Map
Комментариев нет:
Отправить комментарий