java8-"Optional" 检查并 return
java8-"Optional" check and return
我需要一个关于 "Optional" 的问题。
现在我的代码是这样的:
if(userInfoDto==null){
return ApiResult.successMsg("no param");
}
if(StringUtils.isEmpty(userInfoDto.getUserName())){
return ApiResult.successMsg("no username");
}
if(StringUtils.isEmpty(userInfoDto.getEmail())){
return ApiResult.successMsg("no email");
}
if(StringUtils.isEmpty(userInfoDto.getPhone())){
return ApiResult.successMsg("no phone");
}
我想使用 "Optional" 来更改它并检查我的对象和我的属性是否为空。
但是,当我使用 it.I 时,发现它们为空时我无法执行某些操作。
例如:
Optional<UserInfoDto> optionalUserInfoVo = Optional.ofNullable(userInfoDto)
.orElseGet(#{default});
如果userInfoDto==null
我要return一个ApiResult<T>
到我的FE不默认。
和UserInfoDto
,我需要return一些提示 当我检查它的属性是空的时候
但是如果我使用 if(){}else{}
我认为 "Optional" 失去了它的功能;
我该怎么办?
完全没有意义。 Optional
用于 return 值,这些值可能不存在并且几乎没有其他好的用途。您的用例不是其中之一。只是为了说明和警告,您可能会通过以下结构获得类似于您正在尝试的东西:
String message = Optional.ofNullable(userInfoDto)
.flatMap(dto -> Optional.ofNullable(dto.getUserName())
.flatMap(un -> Optional.ofNullable(dto.getEmail())
.map(em -> {
// Do your processing here
return "Successfully processed";
})))
.orElse("Something’s wrong here");
return ApiResult.successMsg(message);
但是:
- 它的可读性显然不如你在问题中的代码。
- 它不能针对不同的 null 条件给出不同的错误消息,如果某处存在 null,则只会给出一条非常无用的消息。
我什至简化了一些要求。我正在检查空用户名和电子邮件。如果您沿同一行添加空 phone 数字检查,它会进一步降低可读性。
孩子们,不要在家里尝试这个。 :-)
我需要一个关于 "Optional" 的问题。
现在我的代码是这样的:
if(userInfoDto==null){
return ApiResult.successMsg("no param");
}
if(StringUtils.isEmpty(userInfoDto.getUserName())){
return ApiResult.successMsg("no username");
}
if(StringUtils.isEmpty(userInfoDto.getEmail())){
return ApiResult.successMsg("no email");
}
if(StringUtils.isEmpty(userInfoDto.getPhone())){
return ApiResult.successMsg("no phone");
}
我想使用 "Optional" 来更改它并检查我的对象和我的属性是否为空。 但是,当我使用 it.I 时,发现它们为空时我无法执行某些操作。 例如:
Optional<UserInfoDto> optionalUserInfoVo = Optional.ofNullable(userInfoDto)
.orElseGet(#{default});
如果userInfoDto==null
我要return一个ApiResult<T>
到我的FE不默认。
和UserInfoDto
,我需要return一些提示 当我检查它的属性是空的时候
但是如果我使用 if(){}else{}
我认为 "Optional" 失去了它的功能;
我该怎么办?
完全没有意义。 Optional
用于 return 值,这些值可能不存在并且几乎没有其他好的用途。您的用例不是其中之一。只是为了说明和警告,您可能会通过以下结构获得类似于您正在尝试的东西:
String message = Optional.ofNullable(userInfoDto)
.flatMap(dto -> Optional.ofNullable(dto.getUserName())
.flatMap(un -> Optional.ofNullable(dto.getEmail())
.map(em -> {
// Do your processing here
return "Successfully processed";
})))
.orElse("Something’s wrong here");
return ApiResult.successMsg(message);
但是:
- 它的可读性显然不如你在问题中的代码。
- 它不能针对不同的 null 条件给出不同的错误消息,如果某处存在 null,则只会给出一条非常无用的消息。
我什至简化了一些要求。我正在检查空用户名和电子邮件。如果您沿同一行添加空 phone 数字检查,它会进一步降低可读性。
孩子们,不要在家里尝试这个。 :-)