我有一个简单的类结构:class BaseModel {}
class Performer extends BaseModel {}
我有一个Performer
的集合:ArrayList<Performer> list = loadPerformerList();
我为什么不能这样做?functionThatNeedsArrayOfBase( (ArrayList<BaseModel>)list );
或者,我该怎么做呢?
最佳答案
子项的集合不是基础的集合。否则,您可以将基础对象添加到您的子集合中,从而打破假设(同样也是如此)。
您可以将函数的参数指定为包含base的导数的列表:
void functionThatNeedsArrayOfBase(ArrayList<? extends BaseModel> list) {
//...
}
然后,您只需传递
list
而无需强制转换