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

时间:2014-01-15 20:10:24

标签: java eclipse

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

List a = new ArrayList();
List<Integer> b = new ArrayList<Integer>();
int x = 19;
a.add(x);

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

我该如何解决此警告?

1 个答案:

答案 0 :(得分:7)

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

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

public class ArrayList<E>

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

使用List<Integer> b,您已明确告诉编译器该列表仅包含Integer个对象的实例,编译器可以验证这一点,从而为您提供类型安全。