Java泛型:未经检查从List <capture#10-of?>转换为List <Object>

use*_*702 6 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);
Run Code Online (Sandbox Code Playgroud)

所以我知道这个类是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) {
Run Code Online (Sandbox Code Playgroud)

如何在不使用的情况下解决此警告

@SuppressWarning("unchecked")
Run Code Online (Sandbox Code Playgroud)

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

 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);
     }
 }
Run Code Online (Sandbox Code Playgroud)

tar*_*lah 9

更改List<?> listList<? extends Object>在:

public JTableUt(List<?> list, Class<?> classGen)
Run Code Online (Sandbox Code Playgroud)

来自Java Generics教程:

重要的是要注意List <Object>并且List<?> 不一样.您可以将Object或Object的任何子类型插入到 List<Object>.但是你只能在一个插入中插入nullList<?>.

  • 您的意思是“将`List&lt;Object&gt;` 更改为`List&lt;?&gt;`”吗?事实上,这个答案没有意义。 (2认同)
  • 抱歉,但这仍然没有意义。你的编辑与我所说的无关。 (2认同)