为什么编码应该是“接口”,尤其是对于原始数据类型?

Ved*_*Ved 1 java oop design-patterns interface

我对为什么我们将代码实现到接口的设计方法有疑问。这在原始数据类型中非常常见。就像我没有得到这两者之间的区别:

Map<Integer, String> mymap = new HashMap<Integer, String>(); 
Run Code Online (Sandbox Code Playgroud)

HashMap<Integer, String> mymap = new HashMap<Integer, String>();
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别吗?我的意思是,mymap在这两种情况下,我们将要使用的每个地方都将保持不变。

如果问题似乎没有用,我很抱歉,但我真的不明白这将如何在以后使用的地方产生任何影响mymap。请帮忙?

谢谢..

注意 - 我已经在 SO 上看到了这个问题,但它没有给出我想要的。

sou*_*eck 5

第二个选项限制您始终使用 HashMap,即使有一天 TreeMap 可能更有用。

在第一个中,您可以更轻松地更改特定实现 - 您只需更改一行代码。如果您从方法返回地图,则尤其明显 - 方法返回类型不必更改。

对接口进行编码也有助于在测试期间模拟对象,但我认为这里并非如此。