Guava之Optional对茫然的null说拜拜

作者: JavaQ | 来源:发表于2016-07-30 17:39 被阅读417次

    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包你就可以很容易的使用,你值得尝试!

    技术分享微信公众号:JavaQ

    Guava之Optional对茫然的null说拜拜

    相关文章

      网友评论

      • 乐逍遥5830:java8不是已经支持了么?这个应该用不到了吧
        JavaQ:@乐逍遥5830 是,但是很多还在用jdk7
      • JavaQ:微信公众号会定期分享Java实战技术,欢迎关注JavaQ

      本文标题:Guava之Optional对茫然的null说拜拜

      本文链接:https://www.haomeiwen.com/subject/ztdtsttx.html