通過鏈接將要去,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