método indefinido para el tipo Java, clases anidadas

Estoy teniendo problemas con las clases anidadas en un proyecto para la escuela. Actualmente, estoy tratando de escribir un método para insertar un elemento en una estructura de datos de matriz irregular. Utiliza un objeto creado por una clase anidada para realizar un seguimiento de la ubicación de la matriz 2D para obtener los índices para insertar. Sin embargo, recibo el error "El método findEnd (E) no está definido para el tipo RaggedArrayList.ListLoc" en la línea:

insertLoc.findEnd(item)

He buscado mucho en stackoverflow y en la web y todavía no he encontrado la respuesta. Si me lo he perdido y esto es redundante (lo sé, hay muchos "métodos indefinidos para preguntas de tipo"), me disculpo.

Aquí está el código relevante >>

clase anidada para el objeto ListLoc:

private class ListLoc {
  public int level1Index;
  public int level2Index;

  public ListLoc() {}

  public ListLoc(int level1Index, int level2Index) {
     this.level1Index = level1Index;
     this.level2Index = level2Index;            
  }

  public int getLevel1Index() {
     return level1Index;
  }

  public int getLevel2Index() {
     return level2Index;
  }

  // since only used internally, can trust it is comparing 2 ListLoc's
  public boolean equals(Object otherObj) {
     return (this == otherObj);
  }
}

Método para encontrar el último índice de un elemento coincidente (que no forma parte de la clase anidada ListLoc):

private ListLoc findEnd(E item){
  E itemAtIndex;

  for (int i = topArray.length -1; i >= 0; i--) {
     L2Array nextArray = (L2Array)topArray[i];

     if (nextArray == null) {
        continue;

     } else {

        for (int j = nextArray.items.length -1; j >= 0; j--) {
           itemAtIndex = nextArray.items[j];
           if (itemAtIndex.equals(item)) {
              return new ListLoc(i, j+1);
           }
        }
     }
  }

  return null;

}

Método que intenta agregar un nuevo valor a la matriz irregular:

boolean add(E item){
  ListLoc insertLoc = new ListLoc();
  insertLoc.findEnd(item);

  int index1 = insertLoc.getLevel1Index();
  int index2 = insertLoc.getLevel2Index();

  L2Array insertArray = (L2Array)topArray[index1];
  insertArray.items[index2] = item;

  return true;

}

Gracias por cualquier aportación.

Respuesta 1

Apuesto a que cambiar esto:

ListLoc insertLoc = new ListLoc();
insertLoc.findEnd(item);

A esto:

ListLoc insertLoc = findEnd(item);

Arreglará tu problema.

Estás tratando de llamar findEnda la ListLocclase, pero si realmente la miras ListLoc, no está definida allí. Cuando intentó llamar findEndal insertLocobjeto, falla porque insertLoces una instancia de ListLoc, que ya dijimos que no contiene findEnd.

Dicho esto, apuesto a que en findItemrealidad se declara en la misma clase que el addmétodo (llamémoslo MyList), por lo que realmente quería llamar MyList.findEnd, no lo inexistente ListLoc.findEnd.

Respuesta: 2

Prácticamente respondiste tu propia pregunta. Estás intentando llamar a findEnd en un objeto ListLoc, pero ListLoc no define un método findEnd. Usted necesita

a) Agregue una implementación para findLoc a ListLoc o

b) Llame a findLoc sobre el objeto apropiado (no ha proporcionado información sobre la otra clase, así que no puedo decir demasiado al respecto)

Respuesta: 3

Método para encontrar el último índice de un elemento coincidente (que no forma parte de la clase anidada ListLoc):

Derecha - es no parte de ListLoc... pero cuando se llama desde aquí:

ListLoc insertLoc = new ListLoc();
insertLoc.findEnd(item);

... que está tratando de llamar como si es parte de la clase. No lo es, así que no puedes llamarlo así.

Muévalo ListLoco cambie la forma en que llama al método.

Respuesta: 4

Estoy empaquetando un software java webapp usando XAMPP para que mis usuarios no tengan que instalar dependencias como mysql. Puedo ejecutar la aplicación web. Copié el formato de los archivos de esquema (.frm) en el xampp ...

¿Es posible modificar el valor de retorno de un método abstracto durante el tiempo de ejecución? Por ejemplo: public abstract class Task {public abstract boolean validate (); public void setValidate (...

La base de datos MongoDB devuelve datos en su propia estructura de datos. Por ejemplo, en el siguiente ejemplo, los datos se devuelven en el cursor. Mi pregunta es "¿Cómo puedo convertir esta estructura de datos en datos definidos por el usuario ...

Estoy creando un pequeño juego de mesa en Java, y quiero implementar los niveles del juego en un archivo XML (es decir, para cada nivel, la identificación del nivel, la altura y la longitud del tablero y la definición de cada celda). .