java - 找不到符号符号: method process(WorkerAnt)

标签 java gridworld

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

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); 
  }
}

我得到的错误如下。

Cannot find symbol symbol: method process(WorkerAnt)

最佳答案

按照链接的分配,Actor没有 process(WorkerAnt)方法。

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

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

理想情况下,您应该更改 processActors(ArrayList<Actor> actors)方法类似于 processProcessables(ArrayList<Processable> processables) .

但是,我在作业中看到您需要实现 processActors(ArrayList<Actor> actors)所以你不能真正做到这一点(尽管我将其称为糟糕的设计 - 它类似于使用方法 divide(object, object) 而不是 divide(double, double) )。

作业说要看看为什么它是糟糕的设计

processActors: Each actor in actors needs to call its process method.

除了Actor没有process方法 - Processable是的,并且 Actor不是Processable .

无论如何,您都必须接受这样一个事实:您期望一些 ActorProcessable s 并执行如下操作:

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

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

An Actor could be a QueenAnt, a Cake, a Cookie, or a WorkerAnt. Without the Processable interface, processActors would need to determine the type of actor and then downcast the actor reference before making the call to process. But, since each of these classes implements Processable, processActors only needs to cast the actor to Processable before the call. This polymorphic processing is allowed because Processable contains the process abstract method. The Java Run Time Environment (JRE) determines the actual type of object at runtime and calls the appropriate process method.

关于java - 找不到符号符号: method process(WorkerAnt),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5985942/

相关文章:

java - 如何正确使用switch语句?

java - 来自 Internet 的 SQLite 数据库

java - 将 map 的返回字符串格式化为字符串但出现错误

java - GridWorld 中的移动算法

java - GridWorld 实验室问题

java - android数据库未打开-SQLITE

java - 我的 firebase recyclerview 仅在单击任何列表时从列表中选取第一个数据

java - 康威斯的生活游戏无法正常工作

java - 将字符网格添加到 jPanel

java - Connect 4 GridWorld 游戏中如何遍历和检查 4 个单元格的线?