您的位置 首页 java

java – 方法返回OptionalDouble而不是double?

java8的函数式编程中中提供了Optional 类型, 旨在帮助用户规避NEP, 如果stram中的值都为0,

Optional提供了很多方法让用户自己觉得要怎么办?

看下这段代码

调用isPresent返回值决定输出

   public final  static   Function <List< File CheckOut>, Double> getAverageDefectCntFunction =
        (ruleResults) ->
        {
            if (ruleResults.isEmpty()) {
                return 0.0000;
            }
            OptionalDouble a = ruleResults.stream().parallel()
                .mapToDouble(p -> p.getDefectCnt()).average();
            logger.info("[getAsDouble---->]" + a.toString());
            if (a.isPresent()){
                return a.getAsDouble();
            }else {
                return 0.0000;
            }
        };  

java – 方法返回OptionalDouble而不是double?

防止NPE的功能

如果要用optional来避免NPE,则需要改造getter方法

 public class User {
     private   Address  address;

    public Optional<Address> getAddress() {
        return Optional.ofNullable(address);
    }

    // ..
}
public class Address {
    private Country country;

    public Optional<Country> getCountry() {
        return Optional.ofNullable(country);
    }

    //.. 
}
  

java – 方法返回OptionalDouble而不是double?

之前的代码

 if (user != null) {
    Address address = user.getAddress();
    if (address != null) {
        Country country = address.getCountry();
        if (country != null) {
            String isocode = country.getIsocode();
            if (isocode != null) {
                isocode = isocode.toUpperCase();
            }
        }
    }
}
  

java – 方法返回OptionalDouble而不是double?

一大堆判空处理,使用option之后是这样的

 @Test
public  void  whenChaining_thenOk() {
    User user = new User("anna@gmail.com", "1234");

    String result = Optional.ofNullable(user)
      .flatMap(u -> u.getAddress())
      .flatMap(a -> a.getCountry())
      .map(c -> c.getIsocode())
      .orElse("default");

    assertEquals(result, "default");
}
  

java – 方法返回OptionalDouble而不是double?

optiondouble的实现方法

文章来源:智云一二三科技

文章标题:java – 方法返回OptionalDouble而不是double?

文章地址:https://www.zhihuclub.com/171098.shtml

关于作者: 智云科技

热门文章

网站地图