Не удается найти символ символа: метод process (WorkerAnt) - PullRequest
1 голос
/ 13 мая 2011

Я делаю этот проект AntFarm для моего класса Java. Этот проект состоит из различных классов (Food, WorkerAnt, Queen), и они взаимодействуют друг с другом с помощью интерфейса (с помощью метода, называемого process).

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

Я получаю следующую ошибку.

Не удается найти символ символа: метод process (WorkerAnt)

1 Ответ

2 голосов
/ 13 мая 2011

Исходя из связанного назначения, 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) определяет фактический тип объекта во время выполнения и вызывает соответствующий метод процесса.

...