Não é possível encontrar o símbolo símbolo:processo de método (WorkerAnt)
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)
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 Actor
não tenho process
métodos - Processable
o que fazer, e Actor
não são Processable
.
De qualquer forma, você terá que se contentar com o fato de que espera algum Actor
é para ser Processable
se 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.