首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 8可选代码审查

Java 8可选代码审查
EN

Stack Overflow用户
提问于 2017-06-29 09:27:17
回答 2查看 221关注 0票数 2

我只想看看我做得对不对。这是使用可选的正确方式,还是可以改进?

代码语言:javascript
复制
String longitudeResult = "Address_Longitude is empty or null;";
String latitudeResult = "Address_Latitude is empty or null;";
if (Optional.ofNullable(location).isPresent()) {
    Optional<Double> longitude = Optional.ofNullable(location.getLongitude());
    Optional<Double> latitude = Optional.ofNullable(location.getLatitude());
    if (longitude.isPresent()) {
        longitudeResult = longitude.get().toString();
    }
    if (latitude.isPresent()) {
        latitudeResult = latitude.get().toString();
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-29 09:41:13

如果您不使用Optional的组合子,那么它就没有意义:

代码语言:javascript
复制
Optional<Location> locationOptional = Optional.ofNullable(location);
String longitudeResult = locationOptional
        .map(Location::getLongitude)
        .map(Object::toString)
        .orElse("Address_Longitude is empty or null;");
String latitudeResult = locationOptional
        .map(Location::getLatitude)
        .map(Object::toString)
        .orElse("Address_Latitude is empty or null;");
票数 10
EN

Stack Overflow用户

发布于 2017-06-29 09:58:46

这似乎没有错,但您可以使用ifPresent链接您的调用。就像这样:

代码语言:javascript
复制
Optional.ofNullable(location).ifPresent(location -> {
  Optional.ofNullable(location.getLatitude()).ifPresent(
    latitude -> latitudeResult = latitude.get().toString());       
  Optional.ofNullable(location.getLongitude().ifPresent(
    longitude -> longitudeResult = longitude.get().toString());   
});

更短的代码对我来说总是更好。

PS.:这段代码没有被编译器模仿。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44821253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档