Guava中的Optional来表达null
来源:互联网 发布:背六级英语单词的软件 编辑:程序博客网 时间:2024/06/04 08:04
写过Java的人都知道有一种exception叫做NullPointerException。所以写的好的程序都是对输入输出进行null检查,也就是防御性编程。
但null具体表示什么意思,大家知道吗?有人说null就是空对象,然后呢?空对象表示什么呢?表示操作成功了,但是结果是空对象,还是操作没成功,所以是空对象?这两种意思到底可以是哪种呢?
正因为null可以被解释成这两种意思,所以才导致了null的歧义性:
1 是操作成功,结果是空对象
2 还是操作失败
那么Guava中的Optional类就是一种能区别这两种情况的返回值,一个Optional对象可以包含一个非空的T引用(即“存在的”)或者不包含任何东西(即“空缺的”),但Optional从来不会包含对null值的引用。
所以使用Optional<T>作为返回值,则后续代码可以通过isPresent()来判断是否返回了期望的值,并且可以使用get()来获得实际的返回值。原本期望返回null或者返回不为null,会有歧义。返回absent表示没有返回期望的值。
这些是Optional的API:
1. OptionalObject.isPresent(): 返回对象是否有值。2. Optional.absent(): 返回一个空Optional对象,isPresent() 将会返回false
3. Optional.of(): 创Optional对象,输入参数不能为null
4. Optional.fromNullable(): 创Optional对象,输入可以为null
5. OptionalObject.asSet(): 和Optional对象值合并,如果为null则返回size为0的Set
6. OptionalObject.or(): 和Optional对象值合并,如果为null为空加则返回or参数作为默认值
7. OptionalObject.orNull(): 和Optional对象值合并,如果为null为空加则返回Null作为默认值
前三个用到的地方最多,4和6结合起来用也很方便,可以表达if else的效果。
原文:http://blog.csdn.net/hongchangfirst/article/details/49925849
作者:hongchangfirst
hongchangfirst的主页:http://blog.csdn.net/hongchangfirst
0 0
- Guava中的Optional来表达null
- Guava中的Optional实现
- Guava 避免null-Optional的使用方法
- guava Optional
- guava Optional
- Guava学习笔记:Optional优雅的使用null
- Guava学习笔记:Optional优雅的使用null
- Guava学习笔记:Optional优雅的使用null
- Guava学习笔记【2】:Optional优雅的使用null
- 【Guava】Optional接口来避免空指针错误
- Atitit. null错误的设计 使用Optional来处理null
- Guava之optional
- Guava之Optional
- Guava —— Optional
- 《Guava之Optional》
- guava Optional api使用
- Google-Guava学习:用Optional<T>表示可能为null的T类型引用
- 利用Java 8 Optional 来进行null处理
- SetRegistryKey的作用
- Java mail 技术实例
- 关于字节的相关知识
- 结合源码探讨WMS与AMS建立连接的桥梁—appWindowToken
- FragmentTransaction的commit和commitAllowingStateLoss的区别
- Guava中的Optional来表达null
- hdoj FatMouse' Trade 1009 (多重背包)
- HttpURLConnection-Get方法实现
- poj 1125
- HTTP:好好理解HTTP协议---字节写HTTP协议
- VMware虚拟机中安装好了VMware Tools,针对Ubantu操作系统
- jquery实现页面局部刷新
- hdoj 偶数求和 2015 (简单数学题)
- JsonModel的使用