Ich entwickle mit Android Studio / IntelliJ IDEA.
Ich habe die Inspektionsprüfung "Konstante Bedingungen und Ausnahmen" aktiviert, die eine Warnung anzeigt, wenn ich eine NPE riskiere, wie zum Beispiel:
%Vor%Ich habe Folgendes in meinem Code:
%Vor% Hier ist der Quellcode von TextUtils#isEmpty(String)
:
Ich riskiere keine NPE, weil TextUtils#isEmpty(String)
zu einem null
-Zeiger zurückkehren würde.
Allerdings bekomme ich immer noch die kleine Method invocation 'encoding.equalsIgnoreCase("gzip")' may produce 'java.lang.NullPointerException'
Warnung, was nervig sein kann.
Ist es möglich, diese Überprüfung schlauer zu machen und die NPE-Warnung zu ignorieren, wenn bereits eine Nullprüfung durchgeführt wurde?
Sie können sich den Link ansehen, den Peter Gromov in seiner Antwort erwähnt hat.
Erstellen Sie einige einfache Klassen, die Ihren Einstellungen ähneln:
Eine Klasse mit einer Methode, annotiert mit @Nullable
:
Die Klasse TextUtil
mit der Methode isEmpty
:
Und schließlich die Hauptklasse, die TextUtil#isEmpty
aufruft:
Wenn Sie nun File -> Settings...
eingeben und zu Inspections ->Constant conditions & exceptions
gehen, können Sie die Configure Assert/Check Methods
ändern, um für Ihre isEmpty
-Methode zu sorgen:
Fügen Sie eine neue IsNull
Prüfmethode hinzu:
Geben Sie die TextUtil
-Klasse, isEmpty
-Methode und CharSequence
-Parameter ein:
Dies gibt dieses Assert/Check Method Configuration
window:
Drücken Sie Ok
und dann Ok
erneut, um zur Editor-Ansicht zurückzukehren, und Sie werden feststellen, dass die Inspektion verschwunden ist:
Sie sagen IntelliJ, dass die isEmpty
-Methode eine Nullprüfung für den Parameter str
vornimmt.
Sie könnten //noinspection ConstantConditions
verwenden, wodurch die NPE-Warnung für die folgende Zeile wie folgt entfernt wird:
Tags und Links intellij-idea android-studio