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)

¿Fue útil?

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 Actors no tiene process - métodos de Processables hacer, y Actors no se Processable.

En cualquier caso, usted tendrá que conformarse con el hecho de que usted puede esperar algunos Actors a Processables 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top