龙空技术网

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

弈秋的美好生活 260

前言:

当前你们对“java字符串转换double”都比较注重,朋友们都需要学习一些“java字符串转换double”的相关资讯。那么小编也在网摘上网罗了一些关于“java字符串转换double””的相关内容,希望我们能喜欢,看官们一起来学习一下吧!

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

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

看下这段代码

调用isPresent返回值决定输出

  public final static Function<List<FileCheckOut>, 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;            }        };

防止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);    }    //.. }

之前的代码

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();            }        }    }}

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

@Testpublic 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");}

optiondouble的实现方法

标签: #java字符串转换double