2017-09-06 82 views
0

我正在使用Retroft和GSON来解析响应。Retrofit Android:方法调用'getSuccess'可能产生'java.lang.NullPointerException'

onResponse代码就像下面

@Override 
     public void onResponse(@NonNull Call<ResultList> call, @NonNull Response<ResultList> response) { 

      if (response.isSuccessful()) { 

        if (response.body() != null && 
          response.body().getSuccess() == 1) { 
       ................ 

我检查response.body() != nullresponse.isSuccessful()。 我仍然在Android工作室上线response.body().getSuccess()发出警告。

如何避免此警告?

我使用改造:2.3.0和gson:2.8.1。 我已经试过这个问题的解决方案(Retrofit Method invocation may produce 'java.lang.NullPointerException' )。但它不起作用

+0

参考:https://stackoverflow.com/questions/45422911/retrofit-method-invocation-may-produce-java-lang-nullpointerexception –

+0

@ Bapusaheb辛德:我已经尝试过。但它不起作用。显示相同的警告 – Ameer

回答

2

方法Response.body()@Nullable注释声明,这意味着它的返回值可能为空。如果您想避免此警告,则必须在调用方法之前检查返回值是否为空。

你的问题包括以下代码:

if (response.body() != null && response.body().getSuccess() == 1) 

这听起来像你期望这删除警告,但不会。这是因为linter无法知道第二次调用body()将返回与第一次调用相同的值。取而代之的是,这样写:

ResultList body = response.body(); 
if (body != null && body.getSuccess() == 1) { 
    ... 
} 
相关问题