Frage

Ich habe den folgenden Code:

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?

War es hilfreich?

Lösung

Ja, ich Erstellen Sie einen neuen HashSet ohne Angabe, welche Klasse es enthalten soll, und dann zu behaupten, dass es Strings enthält. Ändern Sie ihn auf

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

Andere Tipps

Diese Nachrichten treten auf, wenn Sie Klassen verwenden, die die neue J2SE 1.5 Funktion unterstützen - Generika. Sie sie erhalten, wenn Sie nicht explizit die Art des Inhalts der Sammlung angeben.

Zum Beispiel:

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

Wenn Sie eine Sammlung von einem einzelnen Datentyp haben Sie von den Nachrichten loswerden können:

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

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

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

Wenn Sie die -Xlint hinzufügen: nicht aktiviert Parameter an den Compiler, erhalten Sie die spezifischen Details über das Problem

.

Weitere Informationen finden Sie hier: http://forums.sun.com/thread .jspa? threadID = 584.311

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top