aspose file tools*
The moose likes Beginning Java and the fly likes Why developer use Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Why developer use "Map m= new HashMap()" or "List l = new ArrayList()"?" Watch "Why developer use "Map m= new HashMap()" or "List l = new ArrayList()"?" New topic
Author

Why developer use "Map m= new HashMap()" or "List l = new ArrayList()"?

Rahul Sud
Greenhorn

Joined: May 27, 2008
Posts: 25
Hi Techies,

Sorry if this question is repeated ...I have searched but havent got this one...

Why developer use "Map m= new HashMap()" or "List l = new ArrayList()" in place of HashMap hm= new HashMap()" or "ArrayList al = new ArrayList()"

According to me Map or List is interface and it is hidding the implementation from client.


Please give your inputs and share your knowledge for this question.


Thank You,
Rahul
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 14347
    
  22

Have a look at this article: Program to an interface, not an implementation

The main reason to do this is to decouple your code from a specific implementation of the interface. By writing your code like this:

then the rest of your code only knows that data is a Map<String, Object>, which is good, because it you can now easily change to a different implementation of interface Map if necessary. You'd only need to change that one line of code, for example to:

For the rest of your program, nothing changes - data is still a Map<String, Object>.

If you would have written:

then changing it would have been much harder, because the rest of your code might have used methods that are specific to HashMap.

Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 8 API documentation
Rahul Sud
Greenhorn

Joined: May 27, 2008
Posts: 25
Thanks Jesper for good explanation
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
 
subject: Why developer use "Map m= new HashMap()" or "List l = new ArrayList()"?