我有一个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)
我做了一些测试,似乎工作正常,但老实说,我不确定所有可能的影响.
这个解决方案是否正确 它是最好的解决方案吗?
谢谢你的回答.