0

我有点困惑,正在寻找关于声明和实例化 Map 的两种不同方法的差异和不同好处的一些说明。

和有什么区别

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

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

声明超类变量然后用子类实例化它的好处或原因是什么?

4

2 回答 2

1

第一个版本使用 Hashmap 来实现,但只在 myMap 中公开 Map 的成员。

也就是说,你得到了HashMap的功能,但只能通过Map的接口。这样做是为了让您可以更改实现,但仍使用相同的接口成员。

于 2013-07-17T20:39:31.180 回答
1

这称为“接口编程”。(Map是一个接口,而不是一个类。)这允许只需要操作而不关心它到底是Map哪种类型的代码。Map

如果你觉得合适的话,你可以很容易地把HashMapfor 换掉,比如 a ,而且没有其他代码会改变。TreeMap

其他类似问题:

其他参考:

于 2013-07-17T20:38:33.917 回答