Programación General > Java

 Duda con un Warning en netBeans

(1/2) > >>

Cosmos009:
Buenas a todos.
Tengo implementado un programa en Java, y en una de las clases, que implementa la interfaz Comparable, tengo un warning en el método quitarCuenta(), le he dado unas cuantas vueltas pero no acabo de coger el warning, la clase cuenta con  un atributo ArrayList, para almacenar las cuentas de cada cliente, todo funciona como se espera, pero el warning permanece.
Me gustaria si alguien a tenido experiencia con este tipo de Warning que me aclarará un poco de que se queja, porque lo podría configurar desde el hint para que no salga pero no me parece serio, prefiero saber que le pasa...
De antemano os agradezco la ayuda.
Posteo algo de código y el warning en sí:

private ArrayList<CuentaBancaria> cuentasCliente;

   public ClienteBanca(String nom, String dni){

        this.nombre=nom;
        this.dni=dni;
        this.cuentasCliente=new ArrayList<CuentaBancaria>();
    }

  public void quitarCuenta(long numC){    
         for (int i= 0; i < this.getCuentasCliente().size(); i++) {
            if(this.getCuentasCliente().get(i).getNumeroCuenta() == numC)
               this.getCuentasCliente().remove(i); //Aquí es donde apunta el warning,
        }      
    }


 public int compareTo(Object o) {
      ClienteBanca ord = (ClienteBanca)o;
      int resp=0;  
      String este= this.getDni().substring(0, 8);
      String otro= ord.getDni().substring(0, 8);
             
      long esteDni = Long.parseLong(este);
      long otroDni = Long.parseLong(otro);
      resp= (int)((int) esteDni - otroDni);

     return resp;

    }
Warning:
Suspicious call to java.util.Collection.remove:
Given object cannot contain instances of int (expected CuentaBancaria)
PD:Solo me cabe pensar que algo ocurre con la interfaz Comparable.  :brickwall:
Saludos y Gracias.

shadow_rev:
Sencillo, tienes que pasarle la instancia que quieres borrar, no el índice.

--- Código: Java ---// ...CuentaBancaria cuenta_a_borrar = this.getCuentasCliente().get(i);this.getCuentasCliente().remove(cuenta_a_borrar);// ... 
:suerte:

Cosmos009:
Ok shadow_rev , gracias por la indicación ! , ya me quite de encima el warning  :beer:
Pero me surge una duda, porque se queja si se intenta eliminar a través de su índice ?
Saludos y Gracias.

shadow_rev:
Echando un vistazo al API de Collection te puedes dar cuenta: el método remove() recibe como argumento un objeto (no un entero), si este objeto es igual a uno presente en la colección, lo quita.

Pienso que se hace así, ya que el índice es dinámico, es decir, no siempre vas a obtener el mismo objeto de una colección con el mismo índice si a esta colección la modificas agregando o quitando elementos. En otras palabras, el funcionamiento de una colección es distinto al de un array, ya que las colecciones (listas enlazadas, pilas, colas) son estructuras de datos dinámicas, mientras que un array es una estructura de datos estática.

Espero que con esto se aclaren tus dudas, y que los expertos me corrijan si me equivoco :smartass:

Cosmos009:
Ok shadow_rev, gracias de nuevo ;)
Así lo tengo claro, puedo descansar :P.
Perfecto, yo seguia pensando en el remove(int index), de la clase ArraLiist, que esta si lo tiene.Entiendo que deja de ser operativo dicho método al implementar la interfaz Comparable?
Saludos. :good:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa