Domanda

public void addProductList(ArrayList<ViewOrderProduct> globalOrderProductList) {

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

This gives me the warning:

Type safety: Unchecked cast from Object to ArrayList

I know that I can simply solve the problem adding @SuppressWarnings("unchecked").

But I want understand the problem. I can be sure that all goes good if I add the suppressWarnings? Is there another solution for this warning?

È stato utile?

Soluzione

clone() returns Object by default, the correct way to clone an ArrayList is to use the appropriate constructor:

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

Edit: The preferred way is to use the appropriate constructor, and both methods only return a shallow copy anyways.

Edit: And there's no other way I'm aware of, to remove the warning using clone() without a SuppressWarning.

Altri suggerimenti

arraylist is wrapper over Object[], anything inside stored as Object, it does not matter what constructor is used result will be same.

as stated above, to evoid warning you shoud use constructor public ArrayList(Collection c) {}

eg new ArrayList(globalOrderProductList);

this will return copy of content without warnings.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top