我正在为我的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)
答案 0 :(得分:2)
根据关联的作业,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中的每个actor都需要调用其进程方法。
除了Actor
s没有process
方法 - Processable
s,Actor
s不是Processable
。
在任何情况下,您都必须满足于您希望某些Actor
为Processable
s并执行以下操作:
for(Actor nextActor : actors)
{
if (nextActor instanceof Processable)
((Processable)nextActor).process(this);
}
但是,您应该从作业中意识到这一点:
演员可能是QueenAnt,一个蛋糕, Cookie或WorkerAnt。没有 可处理的接口,processActors 需要确定的类型 演员,然后垂头丧气的演员 在打电话之前的参考 处理。但是,因为每一个 类实现Processable, processActors只需要强制转换 演员在电话会议前加工。 允许这种多态处理 因为可处理包含 过程抽象方法。 Java Run 时间环境(JRE)决定了 运行时的实际对象类型 调用适当的处理方法。