我有一个名为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
。