小编Max*_*x S的帖子

通过List <?>从List <subclass>上传到List <superclass>

我有一个A类,一个B类延伸A.

在另一个类CI中有一个字段

private List<B> listB;
Run Code Online (Sandbox Code Playgroud)

现在,由于一些不寻常的原因,我必须在C中实现此方法

public List<A> getList();
Run Code Online (Sandbox Code Playgroud)

我试图通过强制将ListB字段的upcast <A>通过List 强制转换为List 来实现<?>:

public List<A> getList(){
    return (List<A>)(List<?>)listB;
}
Run Code Online (Sandbox Code Playgroud)

客户应该这样做

List<A> list = getList();
for(A a:list){
    //do something with a
}
Run Code Online (Sandbox Code Playgroud)

我做了一些测试,似乎工作正常,但老实说,我不确定所有可能的影响.

这个解决方案是否正确 它是最好的解决方案吗?

谢谢你的回答.

java generics collections wildcard

14
推荐指数
1
解决办法
6604
查看次数

标签 统计

collections ×1

generics ×1

java ×1

wildcard ×1