No se puede encontrar el símbolo de:método de proceso(WorkerAnt)
Pregunta
Yo estoy haciendo esta AntFarm proyecto para mi clase de Java.Este proyecto consta de diferentes clases de Alimentos, WorkerAnt, la Reina) y que interactúan entre sí mediante una interfaz(con un método llamado proceso).
http://ljhs.sandi.net/faculty/volger/apajava/GridWorld/Assignments/AntFarm/ - proyecto
Actualmente estoy atascado en el processActors()
método en WorkerAnt
.(Es casi en la parte inferior de la página).
El código actual es la siguiente:
public void processActors(ArrayList<Actor> actors) {
for (Actor nextActor : actors) {
nextActor.process(this);
}
}
El error que me sale es el siguiente.
No se puede encontrar el símbolo de:método de proceso(WorkerAnt)
Solución
Pasando por el vinculado asignación, Actor
no tiene un process(WorkerAnt)
método.
En su lugar, esto es parte de la Processable
interfaz (y por lo tanto Food
).
Como tal, asegúrese de que su Actor
es un Actor
la aplicación de Processable
(por ejemplo un Food
).
Idealmente, usted cambiaría su processActors(ArrayList<Actor> actors)
el método a ser algo así como processProcessables(ArrayList<Processable> processables)
.
Sin embargo, veo en la asignación que se requieren para implementar un processActors(ArrayList<Actor> actors)
así que realmente no pueden hacer esto (aunque yo voy a llamar a esto como un mal diseño es parecido a tener un método divide(object, object)
en lugar de divide(double, double)
).
Para ver por qué es malo el diseño, la asignación dice
processActors:Cada actor en los actores necesita llamar a su método de proceso.
Excepto Actor
s no tiene process
- métodos de Processable
s hacer, y Actor
s no se Processable
.
En cualquier caso, usted tendrá que conformarse con el hecho de que usted puede esperar algunos Actor
s a Processable
s y hacer algo como esto:
for(Actor nextActor : actors)
{
if (nextActor instanceof Processable)
((Processable)nextActor).process(this);
}
Sin embargo, se han dado cuenta de esto de la asignación:
Un Actor puede ser un QueenAnt, un Pastel, un Cookie, o un WorkerAnt.Sin el Procesable de la interfaz, processActors sería necesario determinar el tipo de el actor y, a continuación, abatido el actor referencia antes de hacer la llamada a proceso.Pero, dado que cada uno de estos clases implementa Procesable, processActors sólo debe emitir el actor para Procesarse antes de la llamada.Este polimórficos de procesamiento es permitido porque Procesable contiene el el proceso de método abstracto.La Ejecución De Java Tiempo Environment (JRE) determina el el tipo real del objeto en tiempo de ejecución y llama al proceso adecuado método.