[英]get default value if the object is null in Java
我很想知道如何在Java中編寫以下代碼的簡短版本。
我有以下Java類(屬於JAX-RS):
如果可能,我需要返回responseStatus的int值(response不為null),否則需要返回默認的int status值。
我不想只為這小段代碼向我的項目中添加任何庫依賴項。
這是我首先想到的代碼:
private static int getDefaultStatusCodeIfNull(final Response response) {
if (Objects.isNull(response)) {
return Response.Status.INTERNAL_SERVER_ERROR.getStatusCode();
}
return response.getStatus();
}
以下代碼對於lambda可能會更短,但它是如此之長且難以閱讀:
int status = Optional.ofNullable(response)
.orElse(Response.status(Response.Status.INTERNAL_SERVER_ERROR).build()).getStatus();
有沒有一種更短的單行方式來獲取此int值?
您認為第二個是比第一個更好的解決方案嗎?
使用三元運算符,也許嗎?
return (response == null) ? Response.Status.INTERNAL_SERVER_ERROR.getStatusCode() : response.getStatus();
您可以使用三元運算符,該運算符可以將if / else放在一行上:
int status = (response == null) ? Response.Status.INTERNAL_SERVER_ERROR.getStatusCode() : response.getStatus();
較干凈的lambda版本是:
Optional.ofNullable(response).map(Response::getStatus).orElse(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode())
坦白地說,我認為這里的三元運算符更干凈。
我更喜歡您的第一個版本,因為使用lanbda聽起來像是過分殺傷。
您還可以使用三元運算符,正如其他人已經指出的那樣:
private static int getDefaultStatusCodeIfNull(final Response response) {
return response != null ? response.getStatus() Response.Status.INTERNAL_SERVER_ERROR.getStatusCode();
}
int status = response==null?Response.Status.INTERNAL_SERVER_ERROR.getStatusCode():response.getStatus();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.