我在声纳上收到这个警告:
避免使用像'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那里做什么?
我不使用声纳,但警告的主要意思是
始终编程到接口而不是实现类
private Map<String, String> map= new HashMap<String, String>();
Interface Implementing class
Run Code Online (Sandbox Code Playgroud)