[英]What does this error description mean?
在用Java编译程序时,我得到了这么大的警告
警告:作为原始类型java.util.LinkedList的成员,对LinkedList(java.util.Collection)的[unchecked]未经检查的调用
在这条线上:
LinkedList<Integer> li2 = new LinkedList(li);
此警告是什么意思?
编辑:
它应该是真实的: LinkedList<Integer> li2 = new LinkedList<Integer>(li);
但是仍然请您回答问题。
原始类型未经检查。 采用
LinkedList<Integer> li2 = new LinkedList<Integer>(li);
您永远不要在新代码中使用原始类型。 仅出于向后兼容的原因提供它。 参见JLS 4.8
为了促进与非通用遗留代码的接口,也可以将参数化类型(第4.5节)的擦除(第4.6节)用作类型。 这种类型称为原始类型。
仅允许使用原始类型作为对遗留代码兼容性的让步。 强烈建议不要在将通用性引入Java编程语言之后在编写的代码中使用原始类型。 Java编程语言的未来版本可能会禁止使用原始类型。
重点是他们的,而不是我的。
您对原始问题进行了更正,这意味着您要专门处理原始类型。 这似乎违反了泛型提供的类型安全的目的,但是您始终可以使用List<Object>
来完成此操作。 它不再是原始的,因此可以保证将来可以使用,尽管它实际上并没有给您任何类型安全性。
根据上下文,您也可以对无界通配符执行List<?>
。
像这样调用构造函数时,LinkedList:
LinkedList<Integer> li2 = new LinkedList<Integer>(li);
原始类型是具有类型参数的类型,但不带参数使用。 由于遗留原因而支持它,但是您永远不要在新代码中使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.