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

7
我收到一个警告: 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类。

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

只是一种猜测(手头没有javac):将List<?>更改为List<? extends Object> - akaIDIOT
1个回答

10

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

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

来自Java泛型教程 :

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


2
你是不是想说“将 List<Object> 改为 List<?> ”?现在这个回答没有意义。 - Paul Bellora
回答已更新,List<?> list 转为 List<? extends Object>,感谢 @PaulBellora。 - Salah Eddine Taouririt
2
抱歉,但它仍然没有意义。你的编辑与我所谈论的内容无关。 - Paul Bellora

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接