Esta advertencia se presenta porque Java no almacena realmente información de tipo en tiempo de ejecución en un objeto que usa genéricos. Por lo tanto, si object
es en realidad un List<String>
, no habrá ClassCastException
en tiempo de ejecución, excepto hasta que se acceda a un elemento de la lista que no coincide con el tipo genérico definido en la variable.
Esto puede causar complicaciones adicionales si se agregan elementos a la lista, con esta información incorrecta de tipo genérico. Cualquier código que aún contenga una referencia a la lista pero con la información de tipo genérico correcta ahora tendrá una lista incoherente.
Para eliminar la advertencia, intenta:
List<?> list = (List<?>) object;
Sin embargo, tenga en cuenta que usted no será capaz de utilizar ciertos métodos como añadir debido a que el compilador no sabe si está intentando añadir un objeto de tipo incorrecto Lo anterior funcionará en muchas situaciones, pero si tiene que usar agregar, o algún método similarmente restringido, solo tendrá que sufrir el subrayado amarillo en Eclipse (o una anotación SuppressWarning
).
Si desea deshacerse del subrayado amarillo en Eclipse, pero no desea agregar '@ SuppressWarning', tiene la opción de ignorar la advertencia en las preferencias. En la ventana de preferencias, vaya a _Java> Compiler> Errors/Warnings_, luego en la sección _Generic types_, cambie la opción ** Operación de tipo genérico no revisada ** a ** Ignore ** – Axel