es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo pasar un vector de clase genérica como argumento?

Tengo estas clases (en diferentes archivos):

public class Student implements Comparable<student> {
   ...
}

public class Application {
   public static <t> T getMax(Vector<><t>> v){
       ...
   }
}

Intento lograr esto:

public static void main(){
    Vector<student> v = new Vector();
    v.add(new Student());
    v.add(new Student());
    Application app = new Application();
    app.getMax(v);// <--- el error está aquí
}

Pero obtengo el error:

El método getMax(Vector<>>) en el tipo Application no es
aplicable para los argumentos (Vector)

¿Qué me estoy perdiendo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el método getMax() de la clase Application espera un Vector de elementos Comparable, pero el método main() está pasando un Vector de elementos Student.

    Una forma de solucionar esto es hacer que la clase Student implemente la interfaz Comparable:

    public class Student implements Comparable<student>{
        ...
    }
    

    Luego, en el método getMax(), puedes eliminar el uso de genéricos y simplemente declarar el parámetro como un Vector de elementos Comparable que extienden Student:

    public static Student getMax(Vector<><? extends Student>> v){
        ...
    }
    

    Esto asegurará que el método getMax() pueda aceptar un Vector de elementos Student, ya que Student implementa la interfaz Comparable.

    El método main() ahora debería funcionar sin errores.

Comments are closed.