Ответ 1
Я думаю, что это хорошая идея, чтобы объяснить, почему простое решение не работает и почему вы никогда не должны его использовать.
Предположим, вы можете применить List<Object>
к List<String>
(то же самое относится к Map, просто более простой интерфейс). Что вы ожидаете от следующего кода:
List<Object> m = Something;
m.add("Looks good.");
m.add(42);
List<String> s = (List<String>)m; // uhuh, no we don't want that.
String myString = s.get(1); // huh exception here.
Теперь вы можете взломать его действительно с помощью решения Bohemians/Chris, но вы в основном уничтожаете систему типа Java. НЕ ДЕЛАЙТЕ ЭТО.. Вы не хотите, чтобы List<String>
содержал Integer! Получите удовольствие от отладки, которая позже - дополнительный код цикла через все переменные позволит избежать множества головных болей и вряд ли это проблема производительности.
Если есть причина объявить Map как объект, а не String, кто-то может добавить к нему какой-либо объект - обычно вы должны избегать этого с лучшим общим.