Como validar paso de parametros genericos en metodo recursivo
Tengo el sigueinte codigo:
String fld_name,
ListModel<?> myListModel) {
for (Component comp : container.getComponents()) {
if (comp instanceof JList) {
if (((JList) comp).getName() != null) {
if (((JList) comp).getName().contentEquals(fld_name)) {
((JList) comp).setModel(myListModel);
}
}
} else if (comp instanceof Container) {
list((Container) comp, fld_name, myListModel);
}
}
}
Como ven simplemente lo que hace es recorrer los container recursivamente y en cada container busca un JList especificado por su nombre, si lo consigue asigna un ListModel de tipo generico usando el metodo setModel() correspondiente, al compilar lanza el siguiente warning:
Pos supuesto puedo deshabilitar el warning quitando el -Xlint pero la pregunta es porque no se valida correctamente en este caso si el parametro esta declarado como un generico y el setModel en su definicion es public void setModel(ListModel model) ?? Alguien podria darme luz en este asunto ???
Gracias
- Inicie sesión o regístrese para enviar comentarios
Debido a que utilizaste un
Debido a que utilizaste un genérico con uso de comodín (<?>) esto quiere decir que esta a la espectativa de lo que reciba como resultado (lo que sea, siempre y cuando sea objeto lo tomará
ListModel<Peras> ListModel<Manzanas>
hasta un< ListModel <Caca>
), y en la definición de la API de esa Clase utiliza la letra "E" que se usa pra elementos específicos y no "?" que se usa para comodines.? extends Object
Creo que debes poner
ListModel<? extends Object>