前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Guava之Optional对茫然的null说拜拜

Guava之Optional对茫然的null说拜拜

作者头像
JavaQ
发布2018-04-04 15:31:56
1.1K0
发布2018-04-04 15:31:56
举报
文章被收录于专栏:JavaQJavaQJavaQ

Java中null的使用有时候会产生一些意想不到的内伤:

1.无法表达具体的业务含义,语义含糊不清;

2.增加了NullPointException的发生,因为不知道什么地方就返回了一个null;

3.null和空容易混为一谈;

4.需要非null判断,弱可读性、代码不够优雅。

返回一个null值绝对不是一个好的选择,所以,对于null关键字尽量避免使用。

而Google的Guava给出了更好的解决方法,Optional工具类是一个更好的选择,如下是Optional提供创建其实例的方法:

Optional.of(T)

根据给定的引用创建Optional实例,若T为null,则抛出NullPointerException

Optional.absent()

创建一个不包含任何引用的Optional实例

Optional.fromNullable(T)

根据给定的引用创建Optional实例,若T为null,则创建一个Optional.absent

Optional实例提供了如下常用方法:

boolean isPresent()

如果Optional实例持有者包含一个非null的实例,则返回True,否则返回false

T get()

如果Optional实例持有者包含一个非null的实例,则返回非null的实例,否则抛IllegalStateException

T or(T defaultValue)

如果Optional实例持有者包含一个非null的实例,则返回非null的实例,否则返回这个defaultValue

T orNull()

如果Optional实例持有者包含一个非null的实例,则返回非null的实例,否则返回null

Set asSet()

如果Optional实例持有者包含一个非null的实例,则返回一个只有一个元素的不可变Set,否则返回一个空Set

使用Optional包装引用的优点:

1.isPresent方法会更加清晰、明确的指明业务上的含义;

2.isPresent方法可以判断实例是否为null,防止NullPointException发生;

3.容易和空区分开;

4.代码的可读性增强,而且返回值可以设置默认值等。

只要引入Guava的jar包你就可以很容易的使用,你值得尝试!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档