public void addProductList(ArrayList<ViewOrderProduct> globalOrderProductList) {
this.productOrderList = (ArrayList<ViewOrderProduct>)globalOrderProductList.clone();
}
这给了我警告:
类型安全:未选中从Object转换为ArrayList
我知道我可以简单地解决添加@SuppressWarnings("unchecked")
的问题。
但我想了解这个问题。如果我添加suppressWarnings,我可以肯定一切顺利吗?这个警告还有另一个解决方案吗?
答案 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);
这将在没有警告的情况下返回内容副本。