1
我有這個問題:Jax.rs:什麼是對象的零長度表示?
我們有一個JAX.RS API這樣的:
@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Path("get")
public User get(@QueryParam(value = "id") String identifier) {
return toUser(getUserEntry(identifier));
}
的TOUSER()方法可以返回空值,這在實踐中意味着客戶將看到一個204 - 無內容響應。
現在,在客戶端上我的代碼看起來是這樣的:
getWebTarget("user")
.path("get")
.queryParam("id", identifier)
.request(getMediaType())
.get()
.readEntity(SsoUser.class);
我期待readEntity()拋出某種異常,但它實際上返回null,不抱怨。
綜觀documentation,我看到:
爲一個零長度的響應實體返回表示零長度的數據對應的Java對象。 如果未爲Java類型定義零長度表示形式,則引發包含基礎NoContentException的ProcessingException。
因此,看起來我的User
類確實定義了「零長度表示」。但是我無法在文檔中的任何位置找到這種表示的含義。
我可以理解Java 可能推斷零長度表示爲空,但我不知道在哪裏定義。
對此有何見解?