У меня есть две карты Something1
и Something2
. Оба расширяют класс Something
.Проблема с генериками и переменным назначением
Map<Class<? extends Something1>, String> m1
Map<Class<? extends Something2> ,String> m2
Я хочу, чтобы создать более общую карту m3
, к которым я могу назначить m1
или m2
вроде этого:
Map<Class<? extends Something>, String> m3 = m1;
Однако я получаю следующее исключение:
Type mismatch: cannot convert from Map<Class<? extends Something1>, String> to Map<Class<? extends Something>, String>
Я также попробовал использовать Class<?>
, но он не работает.
Что я делаю неправильно?
Читать эту answer - http://stackoverflow.com/a/19220458/1679863, чтобы понять, как работают многоуровневые общие типы. После этого вы сможете понять, что изменение вашей третьей карты на: «Карта расширяет класс extends Something>, String> = m1; 'будет работать. –
Большое вам спасибо! Это устранило мою проблему – user1534960