如果对象在 Java 中为 null,则获取默认值
Get default value if the object is null in Java
我很想知道如何在 Java.
中编写以下代码的较短版本
我有以下 Java class(属于 JAX-RS):
如果可能的话,我需要返回 responseStatus 的 int 值(响应不为空),否则需要返回默认的 int 状态值。
我不想为了这一小段代码而向我的项目添加任何库依赖项。
这是我首先想到的代码:
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值的方法?
您认为第二种方案比第一种方案更好吗?
您可以使用三元运算符将 if/else 放在一行中:
int status = (response == null) ? Response.Status.INTERNAL_SERVER_ERROR.getStatusCode() : response.getStatus();
可以使用三元运算符吗?
return (response == null) ? Response.Status.INTERNAL_SERVER_ERROR.getStatusCode() : response.getStatus();
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())
老实说,我认为这里的三元运算符更简洁。
我更喜欢你的第一个版本,因为使用 lambda 听起来有点矫枉过正。
您也可以使用三元运算符,正如其他人已经指出的那样:
private static int getDefaultStatusCodeIfNull(final Response response) {
return response != null ? response.getStatus() : Response.Status.INTERNAL_SERVER_ERROR.getStatusCode();
}
我很想知道如何在 Java.
中编写以下代码的较短版本我有以下 Java class(属于 JAX-RS):
如果可能的话,我需要返回 responseStatus 的 int 值(响应不为空),否则需要返回默认的 int 状态值。
我不想为了这一小段代码而向我的项目添加任何库依赖项。
这是我首先想到的代码:
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值的方法?
您认为第二种方案比第一种方案更好吗?
您可以使用三元运算符将 if/else 放在一行中:
int status = (response == null) ? Response.Status.INTERNAL_SERVER_ERROR.getStatusCode() : response.getStatus();
可以使用三元运算符吗?
return (response == null) ? Response.Status.INTERNAL_SERVER_ERROR.getStatusCode() : response.getStatus();
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())
老实说,我认为这里的三元运算符更简洁。
我更喜欢你的第一个版本,因为使用 lambda 听起来有点矫枉过正。
您也可以使用三元运算符,正如其他人已经指出的那样:
private static int getDefaultStatusCodeIfNull(final Response response) {
return response != null ? response.getStatus() : Response.Status.INTERNAL_SERVER_ERROR.getStatusCode();
}