Java Generics:未经检查从List <capture#10-of?=“”>转换为List <object> </object> </capture#10-of>

时间:2013-05-01 08:27:34

标签: java generics casting

我有一个警告:     Type safety: Unchecked cast from List < capture#10-of ?> to List < Object>

有来电,stock.getListDVD().getListDVD()ArrayList<DVD>

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

所以我知道这个类是DVD.class

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) {

如何在不使用

的情况下解决此警告
@SuppressWarning("unchecked")

非常感谢你的帮助。它节省了我很多时间。 解决方案是

 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);
     }
 }

1 个答案:

答案 0 :(得分:7)

List<?> list更改为List<? extends Object>

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

来自Java Generics tutorial

  

重要的是要注意List <Object>List<?> 不是   相同的。您可以将Object或Object的任何子类型插入到   List<Object>。但您只能将 null 插入List<?>