令人反感的代码
Vector moves = new Vector();
moves.add(new Integer(x));
错误:
ConnectFour.java:82: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.Vector moves.add(new Integer(x));
不确定这样的错误需要多少信息。
问题在于上面的代码没有使用泛型。
以下将起作用:
Vector<Integer> moves = new Vector<Integer>();
move.add(new Integer(x));
<>
(如果为Vector
,E
则为要保存的元素的type参数)内部的类型名称告诉编译器应期望的对象类型。
如果尝试添加一个指定类型的对象(例如,在这种情况下,尝试添加String
和)Vector<Integer>
,则会发生编译时错误,这表明正在使用一种非预期类型的对象添加。
就是说,应该尽量不要使用Vector
该类。为了更多的目的,List
例如ArrayList
从Java
Collections
Framework
实现的类就足够了,并且性能更好。
编辑
尽管与泛型问题没有直接关系,但亚当·佩恩特(Adam Paynter)在有关使用自动装箱的评论中提出了一个很好的观点。
从Java 5开始,原语及其包装类(例如int
和)Integer
将根据需要在彼此之间自动转换。
因此,可以将指定为int
或int
文字的值添加到期望包含的类中Integer
:
Vector<Integer> v = new Vector<Integer>();
v.add(5); // Not necessary to use an Integer value.
问题内容: 我一直在尝试使此代码在这个阶段适合年龄。它的目的是计算一个范围内的素数,我已经编写了一种打印它们的方法。不幸的是,该代码由于警告而无法编译: “警告:[未经检查]以未经检查的方式将add(E)作为原始类型java.util.List的成员进行调用” -我从谷歌搜索中了解到,该警告不是为了声明您应该输入哪种类型的值,但是我已经这样做了,并且该错误似乎仅在尝试在我的.add()函数上出现数
我在应用程序启动时从数据库中检索一些默认值,并使用它来设置活动中微调器项的选定值。 代码工作正常,但问题是我在Android Studio中收到一个警告,警告对a.getPosition调用中作为原始类型“android.widget.ArrayAdapter”成员的“getposition(T)”的未检查调用。 我很高兴它的工作,但新的Android和Java我想了解和消除尽可能多的警告,从我的
问题内容: 我的代码如下 “ try”块中的分配会导致警告说明 为什么是这样? 问题答案: 好吧,首先让我们弄清楚问题出在哪里-它在演员表中。这是一个简短的示例: 这仍然有同样的问题。问题在于强制类型转换实际上不会测试任何东西- 因为强制类型转换将有效地转换为原始类型。因为这有点让人惊讶,因为实际上对象 确实 知道所涉及的类,但是考虑类似的情况: 该类型转换将不会检查它是否 确实 是a ,因为该信
我正在Netbeans IDE 8.2中制作一个商店,由于这个错误,我无法编译。我试着通过添加JComboBox来修复它,但是它没有解决我的问题。这个应用程序的网页版运行良好,但我无法编译它。当使用Xlint:Unchecked运行时,这是一个警告:[unchecked]作为原始类型JComboBox list.addItem(s)的成员对addItem(E)的未检查调用;其中E是一个类型变量:E
我收到这个警告。怎么了?