2017-12-30 64 views
2

Ich bin ein Android-Entwickler, der AndroidStudio oder IntelliJ IDEA verwendet.Verschiedene Fragen @NonNull, @NotNull und @ParametersAreNonnullByDefault

Ich neige dazu, meine IDE zu vertrauen, und ich bin verärgert mit folgenden Fakten:

  1. In android Projekt, wenn IDE eine Methode in Java generiert automatisch die Kotlin-Klasse erweitert dann beide IDE verwendet @NotNull statt @NonNull, gibt es Einstellung dafür? Dies
  2. Wir haben @ParametersAreNonnullByDefault aber wenn ich die Methode aus dem Punkt 1 überschreiben und ich keine Anmerkung IDE setzen warnt mich, aber warum?

Bin ich falsch in meinen Annahmen? Gibt es Lösungen?

+0

Haben Sie diesen Artikel zum Hinzufügen von Anmerkungen überprüft: https://developer.android.com/studio/write/annotations.html? Überprüfen Sie auch die Inspektionseinstellungen in "Einstellungen | Editor | Inspektionen - Java - Mögliche Fehler - Konstante Bedingungen und Ausnahmen" und "Einstellungen | Editor | Inspektionen - Java - Mögliche Fehler - @ NotNull/@ Nullable Probleme" –

+0

Überprüft, dass ich es sehe, überprüfen Sie, dass es wie erwartet aussieht. Aber zwei meiner Fälle sind immer noch die gleichen –

Antwort

1

Welche Anmerkungen für null/not-null zu verwenden sind, wird unter Configure annotations ... auf der Compiler-Seite des Dialogs Settings/Preferences eingestellt. Wählen Sie die gewünschte aus und drücken Sie die Häkchen-Taste. Informationen zur Dokumentation finden Sie unter https://www.jetbrains.com/help/idea/nullable-notnull-configuration-dialog.html.

Ich kann jetzt nicht testen, ob IDEA/AS die Standardannotationen von dort verwenden, wenn sie eine Methode überschreiben, die bereits eine andere verwendet, aber wenn sie nicht müssen, müssen Sie ein Ticket ablegen.

+0

Diese Option ist in IDEA 2017.3.2 vorhanden, aber ist nicht in AS 3.1 Kanarienvogel 6 :( – MyDogTom

+0

Ich sehe es in der Idee, aber nicht in AS. Allerdings sieht aus wie es ignoriert wird, wenn ich es versuche um eine Methode zu generieren, die die Kotlin-abstrakte Klassenmethode implementiert –