2013-04-10 107 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