摆脱警告?

时间:2014-05-25 17:13:11

标签: java

如何在不使用@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;
}

我收到了警告uncheckedelse if(type.equals

1 个答案:

答案 0 :(得分:4)

警告是因为clone()方法返回Object,因此编译器不确定该对象是ArrayList

我建议使用:{/ p>,而不是使用clone()

  1. 使用new ArrayList<>(consoles)(这是复制构造函数)。

  2. 创建新的ArrayList<item>并使用addAll方法将项​​目复制到新的ArrayList<item>

  3. 在不相关的说明中,虽然ArrayList确实实现了clone(),但请注意并非所有类都可以这样做,因此clone()可能无效。