繁体   English   中英

此错误描述是什么意思?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM