Java的Optional,更有意义的“空”
2017-06-02 16:48
169 查看
背景
NullPointerException是java开发中的常见的异常.Person person = people.find("John Smith"); if (person != null) { person.doSomething(); }
遗憾的是,在绝大多数Java代码里,我们常常忘记了判断空引用.
如何优雅的解决这个问题.
Optional是对可以为空的对象进行的封装, 并不会减少代码量,甚至比原来的代码还多。但好处在于,你绝对不会忘记判空,因为这里我们得到的不是Person类的对象,而是Optional。
Optional的使用
创建
如何创建一个Optional对象,基本的规则很简单:如果我们知道自己要封装的对象是一个空对象,可以用
Optional.absent();
如果封装的对象是一个非空对象,则可以用
Optional.of(obj);
如果不知道对象是否为空,就这样创建创建
Optional.fromNullable(obj);
判断
有时候,当一个对象为null的时候,我们并不是简单的忽略,而是给出一个缺省值,比如找不到这个人,任务就交给经理来做。使用Optional可以很容易地做到这一点,以上面的代码为例:Optional person = people.find(“John Smith”);
person.or(manager).doSomething()
说白了,Optinal是给了我们一个更有意义的“空”。
相关文章推荐
- java 中的final意义
- 在关注工作与成就的同时也关注心情与家人,这会让你的心更平衡,工作也显得更有意义。
- Moblin对本土软件厂商将更有意义
- 成就更卓越、更有意义的人生
- java与c#学那样好,谁更有前景些?
- 成就更卓越、更有意义的人生
- 平台之争 Java与.NET谁更有前途
- Why Java Sucks and C# Rocks(1):比较的意义与目的
- Java & C# 哪个更有光明?
- 回复:delphi的接口的意义是不是跟C++和Java的不同呢?
- 一个java实现的简单日历,采用左树右列表的方式实现,具有参考意义
- .Net and Java 哪个更有发展前途(回复网友)
- JAVA垃圾回收机制的意义及其算法分析
- 推荐大家一个打电话的好工具,太好了,比挂QQ更有意义
- java 中的final意义
- 关于Java平台和.net哪个更有潜力在学校论坛的回帖
- .NET和Java在中国哪个更有前途?
- java中serializable的意义是什么?
- 网站分析实时的数据是否更有意义?
- 处理问题的方法的总结,比处理问题本身更有意义。