2013-04-10 145 views
1

我怎麼能禁止這種警告:如何禁用編譯器警告?

LinkedList is a raw type. References to generic type LinkedList<E> 
should be parameterized 

這不起作用:

@SuppressWarnings("unchecked") 
+5

你爲什麼不只是參數呢? – ApproachingDarknessFish 2013-04-10 18:31:09

+0

http://stackoverflow.com/questions/5313723/supress-warning-in-code?rq=1 – herinkc 2013-04-10 18:32:25

+0

我不能參數化它,因爲我想做一個ArrayList數組,這是 LinkedList [] name = new LinkedList []; 但如果我parmtrize它會變成illigal – KaramJaber 2013-04-10 18:40:31

回答

4

@SuppressWarnings( 「rawtypes」)是用來抑制這種註釋。

儘管如果你不使用遺留代碼,你會更好的參數化。

+0

它不工作...我應該寫在提出警告的方法之前? 它爲我寫「」不支持@SuppressWarnings(「rawTypes」)「」 – KaramJaber 2013-04-10 18:38:58

+0

您正在使用哪個版本的Java? RawTypes可從Java6開始提供。 – prashant 2013-04-10 18:44:55

+0

對不起,錯字。更新了答案。注意原始案例 – prashant 2013-04-10 18:46:19

0

如果您使用eclipse將鼠標懸停在文本上(可能是黃色下劃線),並按Ctrl + 1查找可用於解決問題的選項。

但是你應該總是參數化你的列表。

如果你不想參數,然後使用

@SuppressWarnings("rawtypes") 
+0

我無法參數化它,因爲我想要做一個ArrayList數組,它是LinkedList [] name = new LinkedList [];但如果我parmtrize它將成爲illigal – KaramJaber 2013-04-10 19:03:26

+0

使用@SuppressWarnings(「rawtypes」) – NullPointerException 2013-04-10 19:06:23

0

根據您所使用的Java版本,這聽起來像你需要改變你的鏈表實例。

原始類型。

當源代碼被編譯爲在Java 5.0之前開發並且使用在Java 5.0中通用的類的Java 5.0中使用時,那麼「未經檢查」的警告是不可避免的。例如,如果「遺留」代碼使用類似List的類型,在Java 5.0之前它曾經是一個常規(非泛型)類型,但在Java 5.0中是泛型的,所有這些List的使用都被認爲是原始類型的使用Java 5.0。使用原始類型會導致「未檢查」警告。如果您想要消除「未檢查」警告,您必須重新設計「遺留」代碼,並將List的所有原始用途替換爲適當的List實例,例如List,List,List等。所有「未檢查」警告都可以消除這條路。

在爲Java 5.0開發的源代碼中,您可以通過永不使用原始類型來防止「未經檢查」的警告。當您使用泛型類型時,始終提供類型參數。在任何情況下您都不得不使用原始類型。如有疑問,如果您覺得不知道哪種類型的參數適合,請嘗試使用無界通配符「?」。

實質上,如果您可以訪問遺留代碼並且願意重新設計原始類型,則可以消除由於使用原始類型而導致的「未檢查」警告。

http://www.angelikalanger.com/GenericsFAQ/FAQSections/TechnicalDetails.html#FAQ001