Исходя из связанного назначения, Actor
не имеет метода process(WorkerAnt)
.
Вместо этого это часть интерфейса Processable
(и, следовательно, Food
).
Таким образом, убедитесь, что Actor
является Actor
, реализующим Processable
(например, Food
).
В идеале вы бы изменили свой метод processActors(ArrayList<Actor> actors)
на что-то вроде processProcessables(ArrayList<Processable> processables)
.
Тем не менее, в задании я вижу, что вам необходимо реализовать processActors(ArrayList<Actor> actors)
, поэтому вы не можете этого сделать (хотя я собираюсь назвать это плохим замыслом - это похоже на метод * 1020) * вместо divide(double, double)
).
Чтобы понять, почему это плохой дизайн, задание говорит:
processActors: каждый актер в актерах должен вызывать свой метод process.
За исключением того, что Actor
s не имеют process
методов - Processable
s имеют, а Actor
s не Processable
.
В любом случае вам придется согласиться с тем фактом, что вы ожидаете, что некоторые Actor
s будут Processable
s, и сделаете что-то вроде этого:
for(Actor nextActor : actors)
{
if (nextActor instanceof Processable)
((Processable)nextActor).process(this);
}
Однако вы должны были понять это из задания:
Актер может быть QueenAnt, Cake,
Cookie или WorkerAnt. Без
Обрабатываемый интерфейс, processActors
нужно будет определить тип
актер, а затем удрученный актер
перед тем как позвонить
процесс. Но, так как каждый из них
классы реализует Processable,
ProcessActors нужно только привести
Актер обрабатывается перед вызовом.
Эта полиморфная обработка разрешена
потому что Processable содержит
процесс абстрактного метода. Java Run
Time Environment (JRE) определяет
фактический тип объекта во время выполнения и
вызывает соответствующий метод процесса.