JAVA8新特性(六)——Optional API
来源:互联网 发布:联想网络授权店 编辑:程序博客网 时间:2024/06/03 18:40
Optional对null提供了一个更优雅的实现。
比如我们要判断str是否为空,为空则赋值为defalut,用之前的写法是这样:
if(str!=null && !“”.equlas(str)) { } else { str = “defalut”}
但是,使用Oprional
Optional. ofNullable(str). orElse(“defalut”);
Optional的常用方法
of和ofNullable
of和ofNullable是用于创建Optional对象的,of不能创建null对象,而ofNullable可以。
Optional<String> str = Optional.of("sss");//of参数为空,抛nullPointException//Optional<String> str1 = Optional.of(null);//ofNullable,参数可以为空,为空则返回值为空Optional<String> str1 = Optional.ofNullable(null);
isPresent和get
isPresent是用来判断对象是否为空,get获得该对象。
if (str.isPresent()) { System.out.println(str.get());}if (str1.isPresent()) { System.out.println(str1.get());}
orElse和orElseGet
orElse和orElseGet都是实现当Optional为空时,给对象赋值。orElse参数为赋值对象,orElseGet为Supplier函数接口。
//orElseSystem.out.println(str.orElse("There is no value present!"));System.out.println(str1.orElse("There is no value present!"));//orElseGet,设置默认值System.out.println(str.orElseGet(() -> "default value"));System.out.println(str1.orElseGet(() -> "default value"));
orElseThrow
orElseThrow是当存在null时,抛出异常。
try { //orElseThrow str1.orElseThrow(Exception::new);} catch (Throwable ex) { //输出: No value present in the Optional instance System.out.println(ex.getMessage());}
map和flatmap
map和flatmap都是映射,即将Optional中的对象通过Function函数接口转成其他对象。map的函数接口的参数是T,而flatmap的参数是Optional对象
//mapOptional<String> upperName = str.map((value) -> value.toUpperCase());System.out.println(upperName.orElse("default value"));Optional<String> upperName1 = str1.map((value) -> value.toUpperCase());System.out.println(upperName1.orElse("default value"));//flatmapupperName = str.flatMap((value) -> Optional.of(value.toUpperCase()));System.out.println(upperName.orElse("No value found"));
filter
filter是过滤器,参数是Predicate接口。过滤不过对象返回null。
//filter,参数是Predicate接口Optional<String> newStr = str.filter((value) -> value.length() > 5);System.out.println(newStr.orElse("str length is less than 5"));
阅读全文
0 0
- JAVA8新特性(六)——Optional API
- Java8新特性——Optional
- java8新特性--optional
- Java8 新特性之六---------新类库Optional、Streams、Date/Time API(JSR 310)
- Java8新特性 - Optional类
- Java8新特性 - Optional类
- java8新特性---Optional类
- Java8新特性——时间API
- java8新特性(八):Optional
- Java8 新特性之 Optional 类
- Java8新特性之Optional详解
- JAVA8新特性(四)——Stream API
- JAVA8新特性(五)——DateTime API
- Java8 新特性 日期API
- Optional-java8特性
- java8新特性探究(一)optional类
- 6.如何正确使用Optional-java8新特性
- 【Java8】Guava——Optional
- Elasticsearch Reference 5.5 中文翻译8
- Android屏幕适配
- adb 安装软件实例
- IAAS,PAAS,SAAS
- SQL基础(一)
- JAVA8新特性(六)——Optional API
- Java 面试常问的关键字总结
- 三种超好用的word转pdf方法,总有一款合你心意
- php array_diff array_intersect用法
- openstack octca 缺少 placement Service 解决办法
- Nginx+Tomcat+Redis实现负载均衡与Session共享之五 — Nginx+Tomcat+Redis实现Session共享
- Android 面试题(二)
- 计蒜客 16959 Our Journey of Dalian Ends(2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 J)
- 2017/9/20工作总结