Não é possível encontrar o símbolo símbolo:processo de método (WorkerAnt)

StackOverflow https://stackoverflow.com/questions/5985942

  •  12-11-2019
  •  | 
  •  

Pergunta

Estou fazendo este projeto AntFarm para minha classe Java.Este projeto é composto por diferentes classes (Food, WorkerAnt, Queen) e elas interagem entre si por meio de uma interface (com um método denominado processo).

http://ljhs.sandi.net/faculty/volger/apajava/GridWorld/Assignments/AntFarm/ - projeto

Atualmente estou preso no processActors() método em WorkerAnt.(Está quase no final da página.)

O código atual é o seguinte:

public void processActors(ArrayList<Actor> actors) {
  for (Actor nextActor : actors) {
    nextActor.process(this); 
  }
}

O erro que recebo é o seguinte.

Não é possível encontrar o símbolo símbolo:processo de método (WorkerAnt)

Foi útil?

Solução

Indo pela tarefa vinculada, Actor não tem um process(WorkerAnt) método.

Em vez disso, isso faz parte do Processable interface (e portanto Food).

Como tal, certifique-se de que seu Actor é um Actor implementando Processable (por exemplo um Food).

Idealmente você mudaria seu processActors(ArrayList<Actor> actors) método para ser algo como processProcessables(ArrayList<Processable> processables).

No entanto, vejo na tarefa que você é obrigado a implementar um processActors(ArrayList<Actor> actors) então você realmente não pode fazer isso (embora eu vá chamar isso de design ruim - é semelhante a ter um método divide(object, object) em vez de divide(double, double)).

Para ver por que é um design ruim, a tarefa diz

atores do processo:Cada ator em atores precisa chamar seu método de processo.

Exceto Actornão tenho process métodos - Processableo que fazer, e Actornão são Processable.

De qualquer forma, você terá que se contentar com o fato de que espera algum Actoré para ser Processablese faça algo assim:

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

No entanto, você deve ter percebido isso na tarefa:

Um ator pode ser um queenante, um bolo, um biscoito ou um trabalhador.Sem o Interface processável, processActors precisaria determinar o tipo de ator e, em seguida, derrubou o ator referência antes de fazer a chamada para processo.Mas, já que cada um deles classes implementa Processable, processActors só precisa escalar o ator para Processável antes da chamada.Este processamento polimórfico é permitido porque Processable contém o método abstrato de processo.A execução do Java O Ambiente de Tempo (JRE) determina o tipo real de objeto em tempo de execução e chama o método de processo apropriado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top