2013-05-01 56 views
4

我有一个警告: Type safety: Unchecked cast from List < capture#10-of ?> to List < Object>Java泛型:未选中从列表<捕捉#10的?>投列出<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); 
    } 
} 
+0

只是一个预感(手头上没有javac):将'List '更改为'List <?扩展对象>'? – akaIDIOT 2013-05-01 08:30:02

回答

7

变化List<?> listList<? extends Object>在:

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

Java Generics tutorial

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

+0

非常感谢您的帮助。它可以节省我很多时间。 – user2338702 2013-05-01 09:04:59

+0

欢迎来到SO :) – tarrsalah 2013-05-01 09:06:16

+1

您的意思是“更改'清单'到'清单'”?事实上,这个答案没有意义。 – 2013-05-01 13:42:54