[Java 5.0] unchecked : "uses unchecked or unsafe operations"

2591 vistas

Este warning indica que una clase/método parametrizado con los Generics se usa sin indicar el tipo parametrizado, lo que le hace perder la seguridad de las operaciones dadas por los Generics. Aunque se desactive el warning, se mostrará una nota al final de la compilación:



dos
  1. Note: Main.java uses unchecked or unsafe operations.
  2. Note: Recompile with -Xlint:unchecked for details.



Este warning puede mostrarse en su forma detallada con la opción -Xlint:unchecked de javac 5.0:



dos
  1. Main.java:14: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.List
  2.                 list.add("string");



En el ejemplo usamos el método add() de la interfaz java.util.List sin especificar el tipo. Crequetamente, este warning aparece con el código siguiente:



java
  1. List list = new ArrayList();
  2. list.add("string");



La razón es sencilla, la interfaz java.util.List y la clase java.util.ArrayList que la implementa ahora son parametrizadas, por lo que tienen que usarse con los Generics:



java
  1. List<String> list = new ArrayList<String>();
  2. list.add("string");