我在声纳上收到此警告:
避免使用像“HashMap”这样的实现类型;改用界面
这是什么意思?
我收到此警告的课程如下:
class A {
private HashMap<String, String> map=new HashMap<String, String>();
//getters and setters
}
拜托,我想要适当的解决方案来避免对声纳发出警告。
我在声纳上收到此警告:
避免使用像“HashMap”这样的实现类型;改用界面
这是什么意思?
我收到此警告的课程如下:
class A {
private HashMap<String, String> map=new HashMap<String, String>();
//getters and setters
}
拜托,我想要适当的解决方案来避免对声纳发出警告。
您应该始终对接口进行编码。IE。在这种情况下,您应该像这样声明您的字段:
private Map<String, String> map= new HashMap<String, String>();
这样,任何使用该map
变量的东西都会将其视为 typeMap
而不是HashMap
.
这使您可以在以后更换地图的底层实现,而无需更改任何代码。你不再被束缚HashMap
通读这个问题:“编程到接口”是什么意思?
另外我不确定你在做什么Set
?
我不使用声纳,但警告的基本意思是
始终编程到接口而不是实现类
private Map<String, String> map= new HashMap<String, String>();
Interface Implementing class
通常,您应该始终针对接口而不是具体类型来实现。在此示例中,这意味着您应该这样编写代码:
private Map<String, String> map= new HashMap<String, String>();
最大的优势是您以后可以随时更改 Map 的具体实现,而不会破坏代码。
要了解有关它的更多详细信息,请查看以下问题:程序员说“针对接口而不是对象的代码”是什么意思?