Génériques Java: Conversion non cochée d'une liste à l'autre


J'ai un avertissement : Type safety: Unchecked cast from List < capture#10-of ?> to List < Object>

, Il s'agit de l'appel, stock.getListDVD().getListDVD() est un ArrayList<DVD>

jTablePanier=new JTableUt(stock.getListDVD().getListDVD(), DVD.class);

Donc je connais la classe c'est un DVD.classe

private ModelJTableUt model;    
public JTableUt(List<?> list, Class<?> classGen)
{               
    model=new ModelJTableUt((List<Object>) list, classGen); // <-- This line cause the warning, i convert List<?> to List<Object>
}

public ModelJTableUt(List<Object> list, Class<?> classGen) {

Comment puis-je résoudre cet avertissement sans utiliser

@SuppressWarning("unchecked")

Merci beaucoup pour votre aide. Il me sauver de nombreuses heures. La solution est

 public JTableUt(List<? extends Object> list, Class<?> classGen){
    model=new ModelJTableUt(list, classGen);
 }

 List<Object> list;
 public ModelJTableUt(List<? extends Object> list2, Class<?> classGen) 
 {
     list = new ArrayList<Object>();
 //I construct a new List of Object.    
     for (Object elem: list2)
     {
         list.add(elem);
     }
 }
Author: user2338702, 2013-05-01

1 answers

Changer List<?> list en List<? extends Object> dans:

public JTableUt(List<?> list, Class<?> classGen)

À Partir de Java Génériques tutoriel :

, Il est important de noter que List <Object> et List<?> ne sont pas le même. Vous pouvez insérer un objet, ou tout sous-type d'objet, dans un List<Object>. Mais vous ne pouvez insérer null en List<?>.

 7
Author: tarrsalah, 2013-05-01 13:46:32