Buscar
Social
Ofertas laborales ES

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 ???

Gracias

noviembre 5, 2014 | Registered Commenterpanchove

Mira la declaración de JList en el JDK 1.7

http://docs.oracle.com/javase/7/docs/api/javax/swing/JList.html

y la declaración de setModel

http://docs.oracle.com/javase/7/docs/api/javax/swing/JList.html#setModel(javax.swing.ListModel)

noviembre 5, 2014 | Registered Commenterchoces