如何在不使用@SuppressWarnings
的情况下删除以下代码中的警告?
// consoles is an ArrayList of console. The class console extends the class item.
// pcs is an ArrayList of pc. The class pc extends the class item.
public static boolean verify(String type, String model)
{
ArrayList<item> obj;
if(type == null) return false;
else if(type.equals("console")) obj = (ArrayList<item>) consoles.clone();
else if(type.equals("pc")) obj = (ArrayList<item>) pcs.clone();
else return false;
for(int j = 0; j < obj.size(); j++)
if(obj.get(j).get_model().equals(model))
return true;
return false;
}
我收到了警告unchecked
:else if(type.equals
答案 0 :(得分:4)
警告是因为clone()
方法返回Object
,因此编译器不确定该对象是ArrayList
。
我建议使用:{/ p>,而不是使用clone()
使用new ArrayList<>(consoles)
(这是复制构造函数)。
创建新的ArrayList<item>
并使用addAll
方法将项目复制到新的ArrayList<item>
。
在不相关的说明中,虽然ArrayList
确实实现了clone()
,但请注意并非所有类都可以这样做,因此clone()
可能无效。