我的代碼的Java選中轉換
this.htmlSpecialChars = this.getSpecialCharMap();
其中
private HashMap<String,String> htmlSpecialChars;
以下行,但我得到一個關於未檢查轉換的警告。如何停止此警告?
我的代碼的Java選中轉換
this.htmlSpecialChars = this.getSpecialCharMap();
其中
private HashMap<String,String> htmlSpecialChars;
以下行,但我得到一個關於未檢查轉換的警告。如何停止此警告?
你得到這個,因爲getSpecialCharMap ()返回一個對象,其類型不能被編譯器驗證爲HashMap < String,String>。繼續並提供getSpecialCharMap的原型。
Preceed的符合:
@SuppressWarnings("unchecked")
這將關閉編譯器警告。
最好的方法是將您的方法的返回類型修改爲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();
}
那麼,不,最好的*方式將返回所需的類型:'私人靜態HashMap <字符串,字符串> getSpecialCharMap()' – 2011-03-15 20:29:54
對,我編輯帖子 – smas 2011-03-15 20:35:42
返回類型是getSpecialCharMap()
非泛型HashMap?未檢查的轉換警告通常是由於Type Erasure in Generics而發生的。爲了解決這個問題,您需要使用@SuppressWarnings("unchecked")
註銷方法或將返回類型getSpecialCharMap()
更改爲HashMap<String, String>
。
你得到了警告,因爲編譯器不能驗證分配htmlSpecialChars
是一個HashMap <字符串,字符串>,因爲該方法getSpecialChars()返回一個普通的,非通用的HashMap。
你應該修改你的方法來返回特定的泛型類型:
private HashMap<String,String> getSpecialCharMap() {
return new HashMap<String,String>();
}
什麼類型不'getSpecialCharMap()'返回? – Joey 2011-03-15 20:15:40
通過添加'SuppressWarnings(「unchecked」)'? – 2011-03-15 20:18:49
@Joey - 就是這樣!它返回一個HashMap而不是HashMap謝謝 –
2011-03-15 20:21:43