¿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?
davy.ai
El mensaje de error sugiere que el método
getMax()
de la claseApplication
espera unVector
de elementosComparable
, pero el métodomain()
está pasando unVector
de elementosStudent
.Una forma de solucionar esto es hacer que la clase
Student
implemente la interfazComparable
:Luego, en el método
getMax()
, puedes eliminar el uso de genéricos y simplemente declarar el parámetro como unVector
de elementosComparable
que extiendenStudent
:Esto asegurará que el método
getMax()
pueda aceptar unVector
de elementosStudent
, ya queStudent
implementa la interfazComparable
.El método
main()
ahora debería funcionar sin errores.