详解Java8特性之Optional类
来源:互联网 发布:淘宝特卖怎么删除 编辑:程序博客网 时间:2024/06/07 08:52
Optional类
在Java中,可能我们看过最多的异常就是java.lang.NullPointerException
,这是使用null
引用去调用一个方法或者字段的结果。
Java 8中提供了java.util.Optional<T>
类,是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且
可以避免空指针异常。
Optional
常用方法有以下这些:
- Optional.of(T t) : 创建一个 Optional 实例
- Optional.empty() : 创建一个空的 Optional 实例
- Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建空实例
- T get():获取Optional中的值
- isPresent() : 判断是否包含值
- orElse(T t) : 如果调用对象包含值,返回该值,否则返回t
- orElseGet(Supplier s) :如果调用对象包含值,返回该值,否则返回 s 获取的值
- map(Function f): 如果有值对其处理,并返回处理后的Optional,否则返回 Optional.empty()
- flatMap(Function mapper):与 map 类似,要求返回值必须是Optional
Optional
的增加操作和他的创建一起,即增加一个元素便是创建一个Optional
实例。下面是创建容器的例子
@Testpublic void test() { // Optional.of(T t) Optional<String> optional = Optional.of("321"); // 下面这句代码会报NullPointerException Optional<String> optional2 = Optional.of(null); // Optional.empty() Optional<Object> emptyOptional = Optional.empty(); // Optional.ofNullable(T t) Optional<String> nullableOptional = Optional.ofNullable("123"); // 下面这句代码不会报错,因为ofNullable(T t)创建Optional时允许t为null,相当于Optional.empty() Optional<Object> nullableOptional2 = Optional.ofNullable(null);}
通过get()
方法可以从Optional
实例中获取到存放的值。如
@Testpublic void test() { Optional<String> optional = Optional.of("123"); String str = optional.get(); System.out.println(str);//输出123}
isPresent()
判断是否包含值,有点像是我们判断一个集合的size
是否大于0。如
@Testpublic void test() { Optional<String> optional = Optional.of("123"); boolean b = optional.isPresent(); System.out.println(b);// 输出true optional = Optional.ofNullable(null); b = optional.isPresent(); System.out.println(b);// 输出false}
其它方法就不一一试验了,总之这个Optional
类其实就是一个封装了一个元素的容器,而这个元素可以是null
也可以是其它任意类型的。
0 0
- 详解Java8特性之Optional类
- Java8新特性之Optional详解
- Java8 新特性之 Optional 类
- Java8新特性 - Optional类
- Java8新特性 - Optional类
- java8新特性---Optional类
- Optional-java8特性
- java8新特性--optional
- java8系列之Optional
- java8新特性探究(一)optional类
- Java8中的Optional类
- java8 Optional类
- Java8 Optional类
- Java8 Optional类
- JAVA8 Optional类
- JAVA学习之java8 optional
- java8之----Optional取代null
- java8新特性(八):Optional
- Python学习之numpy札记
- javaScipt--------基础入门(二)---->js对象
- 查找指定目录下非目录文件并拷贝
- Python3 输入输出
- idea下svn配置
- 详解Java8特性之Optional类
- Linux下Apach-tomcat服务器的部署
- C之memset、memcpy、strcpy、strncpy区别
- java基础技术知识点总结——字符串、循环、方法参数
- 谈谈tcp/ip协议
- 算法学习笔记--广度优先搜索(1)
- 命令提示符的几种设置
- java把String强转对象
- Oracle12c多租户管理用户、角色、权限