Foro sobre Java SE > Como validar paso de parametros genericos en metodo recursivo
Tengo el siguiEnte codigo:
public void list(Container container, 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: warning: [unchecked] unchecked call to setModel(ListModel) as a member of the raw type JList ((JList) comp).setModel(myListModel); where E is a type-variable: E extends Object declared in class JList 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 ???
Tengo el siguiEnte codigo:
public void list(Container container,
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:
warning: [unchecked] unchecked call to setModel(ListModel) as a member of the raw type JList
((JList) comp).setModel(myListModel);
where E is a type-variable:
E extends Object declared in class JList
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