Es ist eine Anmerkung, aber der richtige Name lautet NonNull
:
protected void onSaveInstanceState(@NonNull Bundle outState)
(Und auch)
import android.support.annotation.NonNull;
Der Zweck besteht darin, dem Compiler zu ermöglichen, zu warnen, wenn bestimmte Annahmen verletzt werden (z. B. ein Parameter einer Methode, die wie in diesem speziellen Fall immer einen Wert haben sollte, obwohl es andere gibt). Aus der Support Annotations- Dokumentation:
Die @NonNull
Anmerkung kann verwendet werden, um anzuzeigen, dass ein bestimmter Parameter nicht null sein darf.
Wenn bekannt ist, dass eine lokale Variable null ist (z. B. weil ein früherer Code überprüft hat, ob sie null ist) und Sie dies als Parameter an eine Methode übergeben, bei der dieser Parameter als @NonNull markiert ist, werden Sie von der IDE gewarnt ein möglicher Absturz.
Sie sind Werkzeuge für die statische Analyse. Das Laufzeitverhalten wird überhaupt nicht verändert.
In diesem Fall besteht die besondere Warnung darin, dass die ursprüngliche Methode, die Sie überschreiben (in Activity
), eine @NonNull
Anmerkung zum outState
Parameter enthält, diese jedoch nicht in die überschreibende Methode aufgenommen hat. Nur das Hinzufügen sollte das Problem beheben, dh
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
}
NotNull
/NonNull
Unterschied war. Antwort entsprechend angepasst.Eine Reihe von nützlichen der Android-Supportbibliothek wurden kürzlich Support-Anmerkungen hinzugefügt. Ihre Hauptaufgabe besteht darin, die Eigenschaften verschiedener Methoden und Parameter mit Anmerkungen zu versehen, um Fehler zu erkennen. Wenn Sie beispielsweise einen
null
Wert an einen Parameter übergeben, der mit derNotNull
Anmerkung gekennzeichnet ist, wird eine Warnung angezeigt.Die Anmerkungen können mit Gradle zu Ihrem Projekt hinzugefügt werden, indem die folgende Abhängigkeit hinzugefügt wird:
Sie erhalten die Warnung, weil der
Bundle
Parameter mit der@NotNull
Annotation markiert ist und durch Überschreiben der Methode die Annotation ausgeblendet wird. Das Richtige ist, die Annotation auch zum Parameter der Überschreibungsmethode hinzuzufügen.quelle
Zusätzlich zu den anderen Antworten kommentiert die Annotation
@NonNull
(und ihr Gegner@Nullable
) einen Feld-, Parameter- oder Methodenrückgabetyp. IntelliJ und damit Android Studio können Sie für möglich warnenNullPointerException
beim Kompilieren Problemen .Ein Beispiel ist hier am besten:
Diese Anmerkungen ändern nicht das Laufzeitverhalten (obwohl ich damit experimentiert habe), sondern dienen als Werkzeug zur Verhinderung von Fehlern.
Beachten Sie, dass die Nachricht, die Sie erhalten haben, kein Fehler war, sondern nur eine Warnung, die Sie ignorieren können, wenn Sie dies wünschen. Die Alternative besteht darin, den Parameter auch selbst zu kommentieren, wie Android Studio vorschlägt:
quelle