找不到符号符号:方法进程(WorkerAnt)

时间:2011-05-13 00:06:30

标签: java gridworld

我正在为我的Java类做这个AntFarm项目。该项目由不同的类(Food,WorkerAnt,Queen)组成,它们使用接口(使用称为进程的方法)相互交互。

http://ljhs.sandi.net/faculty/volger/apajava/GridWorld/Assignments/AntFarm/ - 项目

我目前停留在processActors()中的WorkerAnt方法。 (它几乎位于页面底部。)

目前的代码如下:

public void processActors(ArrayList<Actor> actors) {
  for (Actor nextActor : actors) {
    nextActor.process(this); 
  }
}

我得到的错误如下。

  

找不到符号符号:方法进程(WorkerAnt)

1 个答案:

答案 0 :(得分:2)

根据关联的作业,Actor没有process(WorkerAnt)方法。

相反,这是Processable接口的一部分(因此Food)。

因此,请确保您的ActorActor实施Processable(例如Food)。

理想情况下,您将processActors(ArrayList<Actor> actors)方法更改为processProcessables(ArrayList<Processable> processables)

但是,我在作业中看到你需要实现一个processActors(ArrayList<Actor> actors)所以你不能真正做到这一点(虽然我会把它称为糟糕的设计 - 它类似于有一个方法divide(object, object)代替divide(double, double))。

要知道为什么设计不好,作业说

  

processActors:actor中的每个actor都需要调用其进程方法。

除了Actor s没有process方法 - Processable s,Actor s不是Processable

在任何情况下,您都必须满足于您希望某些ActorProcessable s并执行以下操作:

for(Actor nextActor : actors)
{
    if (nextActor instanceof Processable)
        ((Processable)nextActor).process(this); 
}

但是,您应该从作业中意识到这一点:

  

演员可能是QueenAnt,一个蛋糕,   Cookie或WorkerAnt。没有   可处理的接口,processActors   需要确定的类型   演员,然后垂头丧气的演员   在打电话之前的参考   处理。但是,因为每一个   类实现Processable,   processActors只需要强制转换   演员在电话会议前加工。   允许这种多态处理   因为可处理包含   过程抽象方法。 Java Run   时间环境(JRE)决定了   运行时的实际对象类型   调用适当的处理方法。