我有一个简单的类结构:
class BaseModel {}class Performer extends BaseModel {}
我有一个Performer的集合:
ArrayList<Performer> list = loadPerformerList();
我为什么不能这样做?
functionThatNeedsArrayOfBase( (ArrayList<BaseModel>)list );
或者,我该怎么做呢?

最佳答案

子项的集合不是基础的集合。否则,您可以将基础对象添加到您的子集合中,从而打破假设(同样也是如此)。

您可以将函数的参数指定为包含base的导数的列表:

void functionThatNeedsArrayOfBase(ArrayList<? extends BaseModel> list) {
  //...
}

然后,您只需传递list而无需强制转换

10-07 16:59