web-dev-qa-db-ja.com

メソッド呼び出しにより、NullPointerException Retrofit Bodyが生成される場合があります

私はAPIからの応答を取得し、その値を以下のように定数に保存するためにRetrofit 2を使用しています

if(response.isSuccessful()) {
                    constant.banner_on = response.body().getBanner_on();
                    constant.int_on = response.body().getInt_on();
                    constant.int_click = response.body().getInt_click();
                }

以下のような3つすべてに警告を与えます

Method invocation getBanner_on may produce Java.lang.nullPointerException

私は混乱しており、この警告を解決できません。誰かが私がこれから出てくるのを助けることができるかどうか私に知らせてください。

ありがとう

9
Priya

応答が成功した場合にnullになることはないため、これは単なる警告です。これを無視するか、if(response.body() != null)をラップして警告を削除できます。

Ads ads = response.body();
if(ads != null){
    constant.banner_on = ads.getBanner_on();
    // and so on.
}
11
Nabin Bhandari

このnullポインターチェックを使用するだけです。

If(response != null && response.isSuccessfull())
{

// body

}
1
emilpmp

例外の一部を防ぐために、応答ハンドルnull pointer exceptionから値を割り当てる前の良い習慣です。また、trycatchを使用して他の例外を処理することもできます。

 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();
     }
   }
0
Upendra Shah