我有一个类A和一个继承自A的类B。
在另一个类C中,我有一个字段。
private List<B> listB;
现在,由于某种不寻常的原因,我必须在C中实现这个方法
public List<A> getList();
我尝试通过将listB字段强制向上转型为List<A>
,使用List<?>
进行转型:
public List<A> getList(){
return (List<A>)(List<?>)listB;
}
客户端应该怎么做
List<A> list = getList();
for(A a:list){
//do something with a
}
我做了一些测试,似乎它能正常工作,但老实说我不确定所有可能的影响。
这个解决方案正确吗?并且它是最好的解决方案吗?
感谢您的回答。
Stream<A> getAStream() { return listB.stream().map(A.class::cast); }
用于只读列表访问。 - Joop Eggen