我有如下简单的代码段:
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
//
我只想知道,我可以在.body()
体内的response
上安全地try
打电话吗?
我试图通过在Android Studio中调用.getSub()
来预览我的方法信息CTRL-Q
,但我只有一行
Inferred annotations: @org.jetbrains.annotations.NotNull
我相信这足以说服我,但我必须提出要求并百分百确定。
答案 0 :(得分:0)
如果响应不成功,它可能为null。
答案 1 :(得分:0)
即使请求成功,它也可能为null,如w3c所述:
“响应数据可能会附带其他信息,格式为 MIME邮件正文。数据的重要性取决于状态 代码。
用于数据的Content-Type可以是 客户已经表达了接受或发短信/纯文本的能力,或者 文字/ html。也就是说,总是可以假设客户端可以处理 文字/纯文字和文字/ html。”
参考:https://www.w3.org/Protocols/HTTP/Response.html
在翻新中,body方法定义为Nullable
@Nullable public T body()一个对象的反序列化响应体 成功的回应。
https://square.github.io/retrofit/2.x/retrofit/retrofit2/Response.html