我有一个名为Agent的类:

abstract public class Agent {
// this class doesn't has the method "method_A"
}


和一个类AgentHistoric:

public class AgentHistoric extends Agent{
    public void method_A(){
    code
    }
}


我也有类RandomAgent,AgentAlways0等,它们都扩展了抽象类Agent,但只有AgentHistoric具有方法“ method_A”。

假设我创建了AgentHistoric的objetcs,RandomAgent的objetcs等,并将它们添加到名为agent的ArrayList中。

在另一个类中,我有以下代码:

for (Agent ag: this.agents ){
    ag.update(); // all Agent's subclasses have this method
   if (ag.returntype() == AgentHistoric){ // I know there's a more elegant way, but OK
       method_A() } // error!
}


如何在此循环中执行AgentHistoric的排他方法?

最佳答案

使用instanceof运算符确定ag是否为AgentHistoric。如果是这样,将ag强制转换为AgentHistoric,然后调用method_A

10-07 18:57