2010-03-10 14 views
5

tengo el siguiente código:¿Qué es una operación no controlada e insegura aquí?

private static final Set<String> allowedParameters; 
static { 
    Set<String> tmpSet = new HashSet(); 
    tmpSet.add("aaa"); 
    allowedParameters = Collections.unmodifiableSet(tmpSet); 
} 

Y Causa:

Note: mygame/Game.java uses unchecked or unsafe operations. 
Note: Recompile with -Xlint:unchecked for details. 

Y cuando vuelva a compilar con la opción sugirió que viera a un puntero (^) que apunta a "nuevo" frente a HashSet(); .

¿Alguien sabe lo que está pasando aquí?

Respuesta

9

Sí, está creando un nuevo HashSet sin indicar qué clase debe contener, y luego afirmando que contiene cadenas. Cámbielo a

Set<String> tmpSet = new HashSet<String>(); 
2

estos mensajes aparecen cuando utiliza clases que admiten la nueva característica J2SE 1.5: genéricos. Los obtienes cuando no especificas explícitamente el tipo de contenido de la colección.

Por ejemplo:

List l = new ArrayList(); 
list.add("String"); 
list.add(55); 

Si usted quiere tener una colección de un solo tipo de datos que puede deshacerse de los mensajes por:

List<String> l = new ArrayList<String>(); 
list.add("String"); 

Si necesita poner múltiples tipos de datos en una colección, lo hace:

List<Object> l = new ArrayList<Object>(); 
list.add("String"); 
list.add(55); 

Si agrega el parámetro -Xlint: unchecked al compilador, yo obtienes los detalles específicos sobre el problema. Para obtener más información, consulte: http://forums.sun.com/thread.jspa?threadID=584311

Cuestiones relacionadas