【问题标题】:Java Generics : Unchecked cast from List<capture#10-of ?> to List<Object>Java 泛型:从 List<capture#10-of ?> 到 List<Object> 的未经检查的强制转换
【发布时间】:2013-05-01 08:27:34
【问题描述】:

我有一个警告: Type safety: Unchecked cast from List &lt; capture#10-of ?&gt; to List &lt; Object&gt;

来电了,stock.getListDVD().getListDVD()ArrayList&lt;DVD&gt;

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

【问题讨论】:

  • 只是预感(手头没有 javac):将 List&lt;?&gt; 更改为 List&lt;? extends Object&gt;?

标签: java generics casting


【解决方案1】:

List&lt;?&gt; list 更改为List&lt;? extends Object&gt;

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

来自Java Generics tutorial

需要注意的是List &lt;Object&gt;List&lt;?&gt; 不是 一样的。您可以将 Object 或 Object 的任何子类型插入到 List&lt;Object&gt;。但您只能将 null 插入到 List&lt;?&gt;

【讨论】:

  • 您的意思是“将List&lt;Object&gt; 更改为List&lt;?&gt;”吗?事实上,这个答案没有意义。
  • 答案已更新,列表> 列表到列表,谢谢@PaulBellora
  • 对不起,但这仍然没有意义。您的编辑与我所说的无关。
猜你喜欢
  • 2022-02-03
  • 1970-01-01
  • 2019-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多