Infosintesis Solutions Group, S.L. Apéndice
Inicio | Apéndices | Archivo cartografía...

Cartografía del IDE NetBeans 6

Práctica - Aviso Compilador - Note: Recompile with -Xlint:unchecked for details

Para realizar la práctica de este apéndice nos vamos a crear un proyecto llamado progenericos y un paquete llamado paqgenericos

También nos vamos a crear una Clase llamada ColeccionMesesGenericos que va a contener el método main() tal y como creamos la Clase HolaMundo en el apartado Crear una nueva Clase

Este es el código de la Clase ColeccionMesesGenericos

package paqgenericos;

import java.util.ArrayList;
import java.util.List;

public class ColeccionMesesGenericos {

 public ColeccionMesesGenericos(){
  List mesesAño = new ArrayList();
  mesesAño.add("Enero");
  mesesAño.add("Febrero");
  mesesAño.add("Marzo");

 }

 public static void main(String[] args) {
  new ColeccionMesesGenericos();
 }
}

Ahora vamos a obtener el valor de la primera unidad de la coleccioón añadiendo el siguiente código

package paqgenericos;

import java.util.ArrayList;
import java.util.List;

public class ColeccionMesesGenericos {

 public ColeccionMesesGenericos(){
  List mesesAño = new ArrayList();
  mesesAño.add("Enero");
  mesesAño.add("Febrero");
  mesesAño.add("Marzo");

  String str1 = mesesAño.get(0);
 }

 public static void main(String[] args) {
  new ColeccionMesesGenericos();
 }
}

como podemos observar el método get(int index) retorna un objeto de tipo Object

NetBeans 6 - Método get(int index) de la interfaz java.util.List

como nosotros necesitamos rellenar la variable str1 que es de tipo String, tenemos que realizar un casting o conversión de Object a String. Al hacer clic clic con el botón izquierdo del ratón sobre la bombilla que se encuentra en el margen nos aparace el siguiente mensaje:

NetBeans 6 - Aviso compilador: incompatible types found: java.lang.Object  required: java.lang.String

para realizar el casting seleccionamos Cast ...get(...) to String. Este es el código de la Clase ColeccionMesesGenericos después de haber realizado el casting y de añadir una salida a consola de la variable str1

package paqgenericos;

import java.util.ArrayList;
import java.util.List;

public class ColeccionMesesGenericos {

 public ColeccionMesesGenericos(){
  List mesesAño = new ArrayList();
  mesesAño.add("Enero");
  mesesAño.add("Febrero");
  mesesAño.add("Marzo");

  String str1 = (String) mesesAño.get(0);
  System.out.println("str1: " + str1);
 }

 public static void main(String[] args) {
  new ColeccionMesesGenericos();
 }
}

ahora compilamos la Clase ColeccionMesesGenericos tal y como compilamos la Clase HolaMundo en el apartado Compilar una Clase. Como podemos observar el compilador nos muestra nos muestra el siguiente aviso:

NetBeans 6 - Aviso compilador: Recompile with -Xlint:unchecked for datails

para recompilar la Clase con este parámetro vamos a seguir los siguientes pasos. Primero vamos a hacer clic con el botón derecho del ratón sobre nuestro proyecto y vamos a seleccionar Properties

NetBeans 6 - Propiedades del proyecto - Properties

en el cuadro de dialogo Project Properties seleccionamos Build | Compiling y añadimos en el campo de texto Additional Compiler Options: el parámetro -Xlint:unchecked y seguidamente hacemos clic sobre el botón OK

NetBeans 6 - Build | Compiling. Additional Compiler Options: -Xlint:unchecked

como podemos observar nos aparecen tres warnings con el siguiente mensaje:

NetBeans 6 - Aviso compilador: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.List

Este mensaje nos lo muestra el compilador para incitarnos a utilizar genericos (generics) en nuestras colecciones. La utilización de genéricos

Ahora vamos a realizar las siguientes modificaciones a la Clase ColeccionMesesGenericos

package paqgenericos;

import java.util.ArrayList;
import java.util.List;

public class ColeccionMesesGenericos {

 public ColeccionMesesGenericos(){
  List<String> mesesAño = new ArrayList<String>();
  mesesAño.add("Enero");
  mesesAño.add("Febrero");
  mesesAño.add("Marzo");

  String str1 = mesesAño.get(0); // En esta línea hemos quitado el casting
  System.out.println("str1: " + str1);
 }

 public static void main(String[] args) {
  new ColeccionMesesGenericos();
 }
}

Si ejecutamos la aplicación podemos ver que el compilador ya no nos muestra ningún aviso porque nosotros hemos utilizado los genéricos que se incluyeron en la versión 5.0 del Java SE

NetBeans 6 - sintaxis genericos (generics)

Infosintesis Solutions Group, S.L.
Formación, asesoramiento y desarrollo de proyectos informáticos