Ich verwende Retrofit 2, um eine Antwort von meiner API zu erhalten und den Wert in meiner Konstanten wie unten zu speichern
if(response.isSuccessful()) {
constant.banner_on = response.body().getBanner_on();
constant.int_on = response.body().getInt_on();
constant.int_click = response.body().getInt_click();
}
es warnt mich alle drei wie unten
Method invocation getBanner_on may produce Java.lang.nullPointerException
Ich bin verwirrt und kann diese Warnung nicht beheben. Lassen Sie mich wissen, ob mir jemand helfen kann, daraus zu kommen.
Vielen Dank
Es handelt sich lediglich um eine Warnung, da sie bei einer erfolgreichen Antwort niemals null sein wird. Sie können es ignorieren oder if(response.body() != null)
umschließen, um die Warnung zu entfernen.
Ads ads = response.body();
if(ads != null){
constant.banner_on = ads.getBanner_on();
// and so on.
}
Verwenden Sie einfach diese null
-Zeigerprüfung.
If(response != null && response.isSuccessfull())
{
// body
}
Es ist eine gute Angewohnheit, vor dem Zuweisen von Werten aus der Antwort null pointer exception
einige Ausnahmen zu verhindern. Sie können auch try
und catch
verwenden, um andere Ausnahmen zu behandeln.
if(response.isSuccessful()) {
try {
if(response.body() != null){
constant.banner_on = response.body().getBanner_on();
constant.int_on = response.body().getInt_on();
constant.int_click = response.body().getInt_click();
}
} catch (IOException e) {
e.printStackTrace();
}
}