java - 在 Java 中声明一个父类(super class)变量,然后用子类实例化它

标签 java inheritance hashmap declaration instantiation

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

有什么区别

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

并且

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

声明父类(super class)变量然后用子类实例化它的好处或原因是什么?

最佳答案

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

如果您认为合适,您可以轻松地将 HashMap 替换为 TreeMap,并且无需更改其他代码。

其他类似问题:

其他引用:

关于java - 在 Java 中声明一个父类(super class)变量,然后用子类实例化它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17709725/

相关文章:

Java HashMap 作为方法参数 - 未指定 "value"类型

java - 无法使用 mysqlworkbench 以管理员身份从 hibernate 连接到 mysql

Python 继承和关键字参数

c++ - 继承成员函数访问数据成员

groovy - 使用收集闭包方法在 groovy 中填充 HashMap

java - 如何更改 HashMap 内的链接列表?

java - 根据条目字段在 hazelcast 中为所有条目设置 TTL/记录过期

java - OpenCV Java 微笑检测

带有静态编织的 Java-EE6 : FetchType. LAZY 抛出奇怪的异常

java - 接口(interface)中没有设置方法