无法找到符号符号:方法过程(WorkerAnt)

问题描述:

我正在为我的Java类执行此AntFarm项目。这个项目由不同的类组成(Food,WorkerAnt,Queen),它们使用一个接口(使用一种称为过程的方法)相互交互。无法找到符号符号:方法过程(WorkerAnt)

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

我目前停留在WorkerAntprocessActors()方法。 (这几乎是在页面的底部。)

当前的代码如下:

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

我得到的错误如下。

找不到符号符号:方法处理(WorkerAnt)

+4

请选择一个更好的标题。例如,“无法找到AntFarm(作业)项目的符号符号问题”。 – Arafangion 2011-05-13 00:09:45

+1

Actor类是否包含process()方法? – Salem 2011-05-13 00:10:09

+1

另外,方法过程(WorkerAnt)是否存在? – Arafangion 2011-05-13 00:10:17

通过链接将要去,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都不具备的process方法 - Processable就做,和Actor s为不Processable

在任何情况下,你将不得不接受的事实,你期待一些Actor使他能Processable S和做这样的事情:

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

但是,你应该从分配意识到了这一点:

一个演员可能是QueenAnt,蛋糕, Cookie或WorkerAnt。如果没有 可处理接口,processActors 将需要确定 角色的类型,然后在调用 过程之前向下参与角色 参考。但是,由于这些类中的每一个都实现了可处理,所以processActors只需在调用之前将 角色转换为可处理。 允许这种多态处理 ,因为Processable包含 流程抽象方法。 Java Run 时间环境(JRE)在运行时确定对象的实际类型 ,并且 调用相应的处理方法。