0

我有一个超类Entity,以及许多扩展它的子类。在我的代码中,我循环遍历实体的 ArrayList,然后可以调用如下定义的方法:

public void doThing(Entity e) {
    System.out.println("doThing");
    ...
    ...
    e.subclassMethod(); //Assuming at this point the code is only calling this when e has the method
}

但是,由于subclassMethod仅在特定子类上定义,而不是在基Entity类中定义,我收到错误“方法 subclassMethod() 未定义实体类型”(当然是这样)。

处理这种情况的正确方法是什么,我需要调用一个方法,该方法可以将任意数量的实体子类作为参数传递?谢谢。

4

1 回答 1

1

给定

假设此时代码仅在 e 具有该方法时才调用它

您将不得不投射对象

((SubClass)e).subclassMethod();

显然,在编译时,这种转换只有SubClassEntity. e在运行时,只有当的动态类型是SubClass(或其任何子类型)时,强制转换才会起作用。

于 2013-09-24T20:23:49.967 回答