2013-07-17 1 views
0

Я немного смущен и ищу некоторые разъяснения в отношении различий и различных преимуществ для двух разных подходов к декларации и созданию экземпляра Карты.Объявление переменной суперкласса, а затем ее экземпляр с подклассом в Java

В чем разница между

Map<String, String> myMap = new HashMap<String, String>; 

И

HashMap<String, String> myMap = new HashMap<String, String>; 

Какова польза или причина для объявления суперкласса переменной затем инстанцировании его с подклассом?

ответ

1

Это называется «программирование для интерфейса». (Map - это интерфейс, а не класс.) Это позволяет использовать код Map, который не заботится о том, какой вид Map он действительно есть.

Вы можете легко отключить HashMap, скажем, TreeMap, если вы считаете это уместным, и никакой другой код не изменится.

Другие подобные вопросы:

Другие ссылки:

1

Первая версия использует Hashmap для ее реализации, но только предоставляет членам карты в myMap.

Другими словами, вы получаете функциональность HashMap, но только через интерфейс карты. Это делается так, что вы можете изменить реализацию, но все равно использовать одни и те же элементы интерфейса.

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