警告避免使用'HashMap'等实现类型; 改为使用界面

Oom*_*ity 5 java

我在声纳上收到这个警告:

避免使用像'HashMap'这样的实现类型; 改为使用界面

这是什么意思?

我收到此警告的类如下:

class A {
   private HashMap<String, String> map=new HashMap<String, String>();

   //getters and setters

}
Run Code Online (Sandbox Code Playgroud)

请,我想要适当的解决方案,以避免在声纳上发出警告.

cow*_*wls 16

您应始终编码到接口.即.在这种情况下,您应该声明您的字段:

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

这样使用map变量的任何东西都会将它视为类型Map而不是HashMap.

这允许您在以后更换地图的底层实现,而无需更改任何代码.你不再受束缚HashMap

仔细阅读这个问题:"编程到界面"是什么意思?

另外我不确定你在Set那里做什么?

  • 如果可以,请+1并将字段设为"final". (3认同)

Per*_*ror 5

我不使用声纳,但警告的主要意思是

始终编​​程到接口而不是实现类

private Map<String, String> map= new HashMap<String, String>();
        Interface                    Implementing class
Run Code Online (Sandbox Code Playgroud)