Optional
作为一名Java开发者,在开发过程中,判断是否为空是让我纠结的几个点之一,听说Java 8提供了一个Optional类用于解决这个问题,我已经迫不及待要去了解他了。
- 作用
- 经过研究使用之后,得出一个结论:Optional类其实是用一种具象的方式来避免开发者忘记判空,具体来说就是,Optional是一种傻瓜式的方式,因为Null自身的可读性是很差的,所以利用Optional包裹操作对象,强行用可读文字来提醒开发者需要考虑操作对象为空的可能性,例如if(optional.isPresent())相对于if (xxx==null),可读性就强了很多,而且Optional还提供了
or(Supplier<? extends T> supplier)
,可以利用lambda表达式简化代码,例如nameOptional.or(()->"name is absent")
,当name为空时,就会执行括号中的lambda表达式,返回”name is absent”,之前的版本中还提供了isPresent()方法也支持lambda,但是后来移除了,不知道是基于什么考虑; - 另外,Guava还提供了一些方法用于避免手动判空:
- Strings
- emptyToNull(String)
- isNullOrEmpty(String)
- nullToEmpty(String)
- Preconditions
- checkNotNull(T reference)
- Strings
- 经过研究使用之后,得出一个结论:Optional类其实是用一种具象的方式来避免开发者忘记判空,具体来说就是,Optional是一种傻瓜式的方式,因为Null自身的可读性是很差的,所以利用Optional包裹操作对象,强行用可读文字来提醒开发者需要考虑操作对象为空的可能性,例如if(optional.isPresent())相对于if (xxx==null),可读性就强了很多,而且Optional还提供了
- 用法
- 意义
- 还没有在具体开发中使用Optinal,所以先挖坑,后面来填。