类型安全:方法..属于原始类型..引用泛型应参数化

8 java eclipse

Eclipse在一个工作项目中仅使用以下代码给出了警告(在标题中),其中没有任何内容,只有一个虚拟类和一个主方法:

List a = new ArrayList();
List<Integer> b = new ArrayList<Integer>();
int x = 19;
a.add(x);
Run Code Online (Sandbox Code Playgroud)

最后一行触发警告.我不确定我在这里做错了什么,或者真的,我甚至在做什么.我是一名Java学生,参加了一个可疑的教程,我试图理解泛型.据推测,变量x并未说明类型安全性.我尝试将它转换为Object类型(我认为它什么也没做,因为它已经存在)并且它不起作用.

我该如何解决此警告?

Zav*_*ior 7

您已声明List a没有type参数.这就是eclipse抱怨类型安全的原因,因为你可以将任何类型的对象添加到该列表中.

如果您查看ArrayList api并查看类声明,您会看到它声明如下:

public class ArrayList<E>
Run Code Online (Sandbox Code Playgroud)

用你想要的任何课程代替E.

有了List<Integer> b你已经明确告诉编译器,这个名单是保持的情况下Integer仅对象,编译器可以验证这一点,从而给你键入安全.