我有如下简单的代码片段:
Sub sub = null;
try {
Response<Sub> response = MyRestApi.getInstance().getSub().execute();
sub = response.body(); // Does variable response is always non null?
} catch (IOException e) {
e.printStackTrace();
}
//
// ... further operations on sub
//
我想知道的是,我可以安全地调用try
主体中response
上的.body()
吗?
我试图通过在Android Studio中调用CTRL-Q
来预览我的方法信息.getSub()
,但我得到了唯一的行
Inferred annotations: @org.jetbrains.annotations.NotNull
我相信这应该足以说服我,但我必须询问并100%确定。
即使请求成功,它也可能为null,如w3c:中所述
"响应数据后面可能会有其他信息,格式为MIME邮件正文。数据的重要性取决于状态密码
用于数据的内容类型可以是客户已表达其接受的能力,或文本/纯文本,或text/html。也就是说,人们总是可以假设客户端可以处理text/plain和text/html。">
引用:https://www.w3.org/Protocols/HTTP/Response.html
在改装中,主体方法被定义为可为空的
@Nullable public T body((成功响应。
https://square.github.io/retrofit/2.x/retrofit/retrofit2/Response.html
如果响应不成功,它可能为null。