2011-03-15 17 views
3

我的代碼的Java選中轉換

this.htmlSpecialChars = this.getSpecialCharMap(); 

其中

private HashMap<String,String> htmlSpecialChars; 

以下行,但我得到一個關於未檢查轉換的警告。如何停止此警告?

+6

什麼類型不'getSpecialCharMap()'返回? – Joey 2011-03-15 20:15:40

+2

通過添加'SuppressWarnings(「unchecked」)'? – 2011-03-15 20:18:49

+1

@Joey - 就是這樣!它返回一個HashMap而不是HashMap 謝謝 – 2011-03-15 20:21:43

回答

5

你得到這個,因爲getSpecialCharMap ()返回一個對象,其類型不能被編譯器驗證爲HashMap < String,String>。繼續並提供getSpecialCharMap的原型。

-6

Preceed的符合:

@SuppressWarnings("unchecked") 

這將關閉編譯器警告。

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(); 
} 
+2

那麼,不,最好的*方式將返回所需的類型:'私人靜態HashMap <字符串,字符串> getSpecialCharMap()' – 2011-03-15 20:29:54

+0

對,我編輯帖子 – smas 2011-03-15 20:35:42

-3

返回類型是getSpecialCharMap()非泛型HashMap?未檢查的轉換警告通常是由於Type Erasure in Generics而發生的。爲了解決這個問題,您需要使用@SuppressWarnings("unchecked")註銷方法或將返回類型getSpecialCharMap()更改爲HashMap<String, String>

2

你得到了警告,因爲編譯器不能驗證分配htmlSpecialChars是一個HashMap <字符串,字符串>,因爲該方法getSpecialChars()返回一個普通的,非通用的HashMap。

你應該修改你的方法來返回特定的泛型類型:

private HashMap<String,String> getSpecialCharMap() { 
    return new HashMap<String,String>(); 
    }