Jos*_*osh 3 java polymorphism casting
我有一个简单的类结构:
class BaseModel {}
class Performer extends BaseModel {}
我有一个Performers 的集合:
ArrayList<Performer> list = loadPerformerList();
为什么我不能这样做?
functionThatNeedsArrayOfBase( (ArrayList<BaseModel>)list );
或者,我该怎么做呢?
Att*_*ila 10
儿童的集合不是基础的集合.否则,您可以将基础对象添加到您的子集合中,从而打破假设(同样反过来).
您可以将函数的参数指定为包含base派生词的列表:
void functionThatNeedsArrayOfBase(ArrayList<? extends BaseModel> list) {
//...
}
Run Code Online (Sandbox Code Playgroud)
然后你就可以在list没有施法时通过