Map<String, ? extends MyClass> map;//instantiate and put values somewhere
Map<String, MyClass> map2; //instantiate and put values somewhere.

С учетом приведенных выше карт, как перейти от map к map2 и от map2 к map с помощью putAll() или добиться эффекта putAll() ?

Если я знаю, что это класс InstanceClass, могу ли я каким-то образом преобразовать его в Map<String, InstanceClass>map;?

0
theAnonymous 17 Ноя 2018 в 16:24

2 ответа

Лучший ответ

Map<String, ? extends MyClass> map;//instantiate and put values somewhere

Выражение с подстановочными знаками ? extends MyClass обозначает производителя, что означает, что вы не можете добавлять к нему объекты, потому что вы не знаете, какой тип объекта содержит значение карты в настоящее время. Вы можете только читать оттуда.

Дополнительную информацию можно найти в следующих ответах SO: здесь и здесь.

1
Nicholas K 17 Ноя 2018 в 13:55

Вы можете копировать их пошагово. Вот подход, в котором используется Map.forEach:

map.forEach(map2::put);
0
ernest_k 17 Ноя 2018 в 13:36