警告克隆Java中的ArrayList

时间:2013-11-22 14:35:16

标签: java object arraylist clone suppress-warnings

public void addProductList(ArrayList<ViewOrderProduct> globalOrderProductList) {

    this.productOrderList =  (ArrayList<ViewOrderProduct>)globalOrderProductList.clone();
}

这给了我警告:

  

类型安全:未选中从Object转换为ArrayList

我知道我可以简单地解决添加@SuppressWarnings("unchecked")的问题。

但我想了解这个问题。如果我添加suppressWarnings,我可以肯定一切顺利吗?这个警告还有另一个解决方案吗?

2 个答案:

答案 0 :(得分:8)

clone()默认返回Object,克隆ArrayList的正确方法是使用适当的构造函数:

this.productOrderList =  new ArrayList<ViewOrderProduct>(globalOrderProductList);

编辑:首选方法是使用适当的构造函数,两种方法都只返回浅层副本。

编辑:我没有其他任何方法可以使用clone()删除警告而不使用SuppressWarning

答案 1 :(得分:0)

arraylist是Object []的包装,任何内部存储为Object,无论使用什么构造函数都无关紧要。

如上所述,为了避免警告你应该使用构造函数public ArrayList(Collection c){}

例如new ArrayList(globalOrderProductList);

这将在没有警告的情况下返回内容副本。