导航
导航

null or not?

是不是厌烦了代码里写一大推判断是否为null?作为一个被老大影响的轻度代码洁癖者根本不能忍啊
比如下面这种:

public void sayHello(String name){
    if(name==null){
        name = "游客";
    }
    System.out.println("Hello, "+name);
}

来来来~新技能Get√ Java8引入了一个新的Optional类来解决我们的烦恼。but!!仔细听,今天我来推荐另一个,使用Guava中Optional来实现

上个代码瞅瞅 我来改下上面的代码:

import com.google.common.base.Optional;

public void sayHello(String name){
    name = Optional.fromNullable(name).or("游客");
    System.out.println("Hello, "+name);
}

请叫我代码不风骚不舒服斯基。。

引用一句我觉得很好的介绍

使用Optional除了赋予null语义,增加了可读性,最大的优点在于它是一种傻瓜式的防护。Guava中Optional类就是用来强制提醒开发者,注意对Null的判断。迫使你积极思考引用缺失的情况

#新技能Get√# 妈妈再也不用担心我的Null了 当然前提你需要引入maven依赖

<dependency>
     <groupId>com.google.guava</groupId>
     <artifactId>guava</artifactId>
     <version>14.0-rc3</version>
</dependency>

贴一下常用方法

  • Optional.of(T) 为Optional赋值,当T为Null直接抛NullPointException,建议这个方法在调用的时候直接传常量,不要传变量

  • Optional.fromNullable(T) 为Optional赋值,当T为Null则使用默认值。建议与or方法一起用,风骚无比

  • T or(T) 当Optional的值为null时,使用or赋予的值返回。与fromNullable是一对好基友

  • Optional.absent() 为Optional赋值,采用默认值

  • T get() 当Optional的值为null时,抛出IllegalStateException,返回Optional的值

  • boolean isPresent() 如果Optional存在值,则返回True

  • T orNull() 当Optional的值为null时,则返回Null。否则返回Optional的值

  • Set asSet() 将Optional中的值转为一个Set返回,当然只有一个值啦,或者为空,当值为null时。

参考资料:
HollisChuang’s Blog