2010-03-10 8 views
5

Ich habe den folgenden Code:Was ist der ungeprüfte und unsichere Betrieb hier?

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

Und es verursacht:

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

Und wenn ich mit der vorgeschlagenen Option neu kompilieren sehe ich einen Zeiger (^) auf „neu“ vor HashSet(); zeigen .

Weiß jemand, was hier vor sich geht?

Antwort

9

Ja, Sie erstellen ein neues HashSet, ohne anzugeben, welche Klasse es enthalten soll, und bestätigen dann, dass es Zeichenfolgen enthält. Ändern Sie es zu

2

Diese Meldungen treten auf, wenn Sie Klassen verwenden, die das neue J2SE 1.5 Feature - Generics unterstützen. Sie erhalten sie, wenn Sie den Inhalt der Sammlung nicht explizit angeben.

Zum Beispiel:

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

Wenn Sie eine Sammlung eines einzelnen Daten haben wollen, geben Sie der Nachrichten loswerden von:

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

Wenn Sie mehrere Datentypen setzen müssen einmal Sammlung in, was Sie tun:

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

Wenn Sie den -Xlint hinzufügen: nicht aktiviert Parameter an den Compiler, yo Sie erhalten die spezifischen Details zu dem Problem.

für weitere Details siehe hier: http://forums.sun.com/thread.jspa?threadID=584311