我有以下代码行
this.htmlSpecialChars = this.getSpecialCharMap();
,其中
private HashMap<String,String> htmlSpecialChars;
但我收到有关未经检查的转化的警告。如何停止此警告?
答案 0 :(得分:6)
你得到这个是因为getSpecialCharMap()正在返回一个对象,该对象的类型无法被编译器验证为HashMap&lt;字符串,字符串&gt;。继续为getSpecialCharMap提供原型。
答案 1 :(得分:2)
您收到警告,因为编译器无法验证对htmlSpecialChars
的赋值是否为HashMap&lt; String,String&gt;,因为方法getSpecialChars()返回一个普通的非泛型HashMap。
您应修改方法以返回特定的泛型类型:
private HashMap<String,String> getSpecialCharMap() {
return new HashMap<String,String>();
}
答案 2 :(得分:0)
最好的方法是将方法的返回类型修改为numberMap的类型或这种方式 - 请注意这是非常糟糕的做法。不要告诉任何人我告诉你这个:
未经检查的转化警告示例:
private static HashMap getSpecialCharMap() {
return new HashMap();
}
public static void main(String[] args) {
HashMap<String,String> numberMap = getSpecialCharMap(); //warning
}
没有警告的示例:
...
@SuppressWarnings("unchecked")
public static void main(String[] args) {
@SuppressWarnings("unused")
HashMap<String,String> numberMap = getSpecialCharMap();
}
答案 3 :(得分:-3)
getSpecialCharMap()
非泛型HashMap的返回类型是什么?由于Type Erasure in Generics,通常会发生未经检查的转化警告。为了解决这个问题,您需要使用@SuppressWarnings("unchecked")
来宣传该方法,或将getSpecialCharMap()
的返回类型更改为HashMap<String, String>
。
答案 4 :(得分:-7)
先行:
@SuppressWarnings("unchecked")
这将关闭编译器警告。