2011-01-29 3 views
1

У меня есть следующий класс:Преобразование карты <T> в производный класс

class DerivedMap extends Hashmap<String,Object> 
{} 

, который я использую, потому что я хочу, чтобы реализовать некоторые пользовательские действия для этого типа карты.

Затем я передаю экземпляры этого класса во внешний api, который хочет Map, это естественно работает хорошо.

Проблема в том, что я также получаю экземпляры Map в качестве возвращаемых значений из api. Поскольку реальный объект скрывается за интерфейсом, который выбрал api, я знаю, что я не могу просто его бросить.

Итак, как мне преобразовать карту в мою собственную DerivedMap? Должен ли я вручную копировать все ключи/значения?

Спасибо.

+0

putAll() [и еще 7 символов] – bestsss

ответ

4

Вы можете создать конструктор вроде этого:

class DerivedMap extends HashMap<String, Object> { 
    public DerivedMap(Map<String, Object> map) { 
     super(map); 
    } 
} 

, а затем создать DerivedMap из Map, как это:

derivedMap = new DerivedMap(otherMap); 

super(map) вызывает HashMap конструктор, который копирует все отображения аргумента карту на вновь созданную карту. Из документов:

Создает новую HashMap с теми же сопоставлениями, что и указанная Карта.

+0

Ah. Конечно. Большое спасибо. – monoceres

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