Zum Beispiel:
javac Foo.java
Note: Foo.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Zum Beispiel:
javac Foo.java
Note: Foo.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Dies tritt in Java 5 und später auf, wenn Sie Sammlungen ohne Typspezifizierer verwenden (z. B., Arraylist()
anstelle von ArrayList<String>()
). Das bedeutet, dass der Compiler nicht überprüfen kann, ob Sie die Sammlung auf eine typsichere Weise verwenden, indem er Generika .
Um die Warnung loszuwerden, müssen Sie nur genau angeben, welche Art von Objekten Sie in der Sammlung speichern wollen. Also, anstatt von
List myList = new ArrayList();
verwenden.
List<String> myList = new ArrayList<String>();
In Java 7 können Sie die generische Instanziierung verkürzen, indem Sie Typ-Inferenz .
List<String> myList = new ArrayList<>();
Wenn Sie den Vorschlag befolgen und mit der Option "-Xlint:unchecked" neu kompilieren, erhalten Sie genauere Informationen.
Neben der Verwendung von Rohtypen (wie in den anderen Antworten beschrieben) kann auch ein ungeprüfter Cast die Warnung verursachen.
Sobald Sie mit -Xlint kompiliert haben, sollten Sie in der Lage sein, Ihren Code zu überarbeiten, um die Warnung zu vermeiden. Dies ist nicht immer möglich, insbesondere wenn Sie älteren Code integrieren, der nicht geändert werden kann. In diesem Fall können Sie die Warnung an Stellen unterdrücken, von denen Sie wissen, dass der Code korrekt ist:
@SuppressWarnings("unchecked")
public void myMethod()
{
//...
}
Diese Warnung bedeutet, dass Ihr Code auf einem rohen Typ arbeitet, kompilieren Sie das Beispiel mit der
-Xlint:unchecked
um die Details zu erfahren
wie diese:
javac YourFile.java -Xlint:unchecked
Main.java:7: warning: [unchecked] unchecked cast
clone.mylist = (ArrayList<String>)this.mylist.clone();
^
required: ArrayList<String>
found: Object
1 warning
docs.oracle.com spricht hier darüber: http://docs.oracle.com/javase/tutorial/java/generics/rawTypes.html
Ich hatte 2 Jahre alte Klassen und einige neue Klassen. Ich habe es in Android Studio wie folgt gelöst:
allprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:unchecked"
}
}
}
In der Datei build.gradle meines Projekts ( Borzh Lösung )
Und wenn dann noch etwas Metheds übrig ist:
@SuppressWarnings("unchecked")
public void myMethod()
{
//...
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.