我有一个抽象类Entity
,它有几个子类:SubclassA
、SubclassB
和SubclassA
还有一个子类SubSubClass
。
我也有一个类为SomeClass
的对象someObject
,它长这样:
class SomeClass{
void doSomething(Entity e){..}
void doSomething(SubclassA e){..}
void doSomething(SubclassB e){..}
void doSomething(SubSubClass e){..}
}
我有一个List<Entity> list
。这个列表中的每个项目都会传递给someObject.doSomething
。
for(Entity entity : list){
someObject.doSomething(entity);
}
事情是这样的,无论当前Entity的实际类型是什么,
doSomething(Entity e)
总是被调用,因为引用类型总是Entity
。为了解决这个问题,我需要进行类型转换,例如:someObject.doSomething((SubclassB)entity)
。所以我想知道是否有一种方法可以将对象动态地转换为其具体类型,而不需要使用
instanceof
操作。如果没有办法做到这一点,你会如何处理我的情况?