java-8 – Guava Java 8可选可选,有多个选项
发布时间:2020-12-15 04:32:05 所属栏目:Java 来源:网络整理
导读:这是一个具有多个可能值的Guava可选项. long numberToUse = Long.parseLong(Optional .ofNullable(System.getenv(ENV_VAR)) .or(Optional.ofNullable(System.getProperty(PROP_VAR))) .or("15")); 如何将其转换为干净的Java 8语法? 解决方法 您可以使用嵌套
这是一个具有多个可能值的Guava可选项.
long numberToUse = Long.parseLong(Optional .ofNullable(System.getenv(ENV_VAR)) .or(Optional.ofNullable(System.getProperty(PROP_VAR))) .or("15")); 如何将其转换为干净的Java 8语法? 解决方法
您可以使用嵌套的
orElse :
long numberToUse = Long.parseLong(Optional .ofNullable(System.getenv(ENV_VAR)) .orElse( Optional.ofNullable(System.getProperty(PROP_VAR)) .orElse("15"))); 请注意,在Guava和此处的System.getProperty(PROP_VAR)分支都执行,即使它是不必要的.为了使它懒惰使用 long numberToUse = Long.parseLong(Optional .ofNullable(System.getenv(ENV_VAR)) .orElseGet( () -> Optional.ofNullable(System.getProperty(PROP_VAR)) .orElse("15"))); Java-9添加了 long numberToUse = Long.parseLong(Optional .ofNullable(System.getenv(ENV_VAR)) .or(() -> Optional.ofNullable(System.getProperty(PROP_VAR))) .orElse("15")); 正如@BoristheSpider建议的那样,你也可以将Long.parseLong移动到可选的管道中: long numberToUse = Optional .ofNullable(System.getenv(ENV_VAR)) .or(() -> Optional.ofNullable(System.getProperty(PROP_VAR))) .map(Long::parseLong) .orElse(15L); 最后,可以使用Stream API(这也适用于Java-8): long numberToUse = Stream.of(System.getenv(ENV_VAR),System.getProperty(PROP_VAR)) .filter(Objects::nonNull).findFirst().map(Long::parseLong).orElse(15L); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读