无法找到符号符号:方法过程(WorkerAnt)
我正在为我的Java类执行此AntFarm项目。这个项目由不同的类组成(Food,WorkerAnt,Queen),它们使用一个接口(使用一种称为过程的方法)相互交互。无法找到符号符号:方法过程(WorkerAnt)
http://ljhs.sandi.net/faculty/volger/apajava/GridWorld/Assignments/AntFarm/ - 项目
我目前停留在WorkerAnt
的processActors()
方法。 (这几乎是在页面的底部。)
当前的代码如下:
public void processActors(ArrayList<Actor> actors) {
for (Actor nextActor : actors) {
nextActor.process(this);
}
}
我得到的错误如下。
找不到符号符号:方法处理(WorkerAnt)
通过链接将要去,Actor
没有一个process(WorkerAnt)
方法。
相反,这是Processable
接口的一部分(因此也是Food
)。
因此,请确保您的Actor
是Actor
实施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)在运行时确定对象的实际类型 ,并且 调用相应的处理方法。
请选择一个更好的标题。例如,“无法找到AntFarm(作业)项目的符号符号问题”。 – Arafangion 2011-05-13 00:09:45
Actor类是否包含process()方法? – Salem 2011-05-13 00:10:09
另外,方法过程(WorkerAnt)是否存在? – Arafangion 2011-05-13 00:10:17