


What is the key difference between `HashMap map = new HashMap();` and `Map map = new HashMap();` in Java?
Distinction Between HashMap and Map in Java
When defining maps in Java, users may encounter variations like:
HashMap<String, Object> map = new HashMap<String, Object>(); Map<String, Object> map = new HashMap<String, Object>();
Underlying Object
Despite these differences, both map declarations result in the same underlying object: a HashMap
Interface Difference
In the first instance, the interface type is HashMap
Coding to Interfaces
Generally, it is recommended to code to the most abstract interface (Map here) rather than a specific implementation (HashMap). This allows for flexibility in changing the underlying implementation without breaking existing code.
Example of Contract Breakage
Consider a class Foo with two HashMaps:
class Foo { private HashMap<String, Object> things; private HashMap<String, Object> moreThings; // Getters and methods using HashMaps }
A subclass SpecialFoo uses things and moreThings via methods that expect HashMaps:
class SpecialFoo extends Foo { // Methods using HashMaps }
If Foo is later updated to use TreeMaps instead of HashMaps, the type signature of things and moreThings changes. As a result, SpecialFoo breaks because it is expecting HashMaps but is now receiving TreeMaps.
Solution: Declaring Collections as Interfaces
To prevent such contract breaches, declare the collections as the most abstract interface possible:
class Foo { private Map<String, Object> things; private Map<String, Object> moreThings; // Getters and methods using Maps }
This approach ensures that SpecialFoo will not break if Foo's implementation changes.
Benefits of Coding to Interfaces
- Increased flexibility and maintainability
- Reduced risk of contract breakage
- Adherence to software design principles (e.g., encapsulation, dependency inversion)
Therefore, while the two map declarations may appear different, they result in the same underlying object. Best practice dictates coding to the most abstract interface to preserve flexibility and prevent code breakage.
The above is the detailed content of What is the key difference between `HashMap map = new HashMap();` and `Map map = new HashMap();` in Java?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











Troubleshooting and solutions to the company's security software that causes some applications to not function properly. Many companies will deploy security software in order to ensure internal network security. ...

Solutions to convert names to numbers to implement sorting In many application scenarios, users may need to sort in groups, especially in one...

Field mapping processing in system docking often encounters a difficult problem when performing system docking: how to effectively map the interface fields of system A...

Start Spring using IntelliJIDEAUltimate version...

Conversion of Java Objects and Arrays: In-depth discussion of the risks and correct methods of cast type conversion Many Java beginners will encounter the conversion of an object into an array...

When using MyBatis-Plus or other ORM frameworks for database operations, it is often necessary to construct query conditions based on the attribute name of the entity class. If you manually every time...

How does the Redis caching solution realize the requirements of product ranking list? During the development process, we often need to deal with the requirements of rankings, such as displaying a...

Detailed explanation of the design of SKU and SPU tables on e-commerce platforms This article will discuss the database design issues of SKU and SPU in e-commerce platforms, especially how to deal with user-defined sales...
