首页 > 代码库 > Guava Optional 的应用

Guava Optional 的应用

今天老板让普通青年和文艺青年分别写一段SayHello的代码,要求如下,当用户名为null时则称呼“火星人”

不一会普通青年和文艺青年提交了代码。

普通青年的代码:

public void 普通青年_sayHello(String name){
	if(name==null){
	    name = "火星人";
	}
	System.out.println("普通青年说:Hello, "+name);
}


文艺青年的代码:

import com.google.common.base.Optional;

public void 文艺青年_sayHello(String name){
	name = Optional.fromNullable(name).or("火星人");
	System.out.println("文艺青年说:Hello, "+name);
}

文艺青年的代码和普通青年的作用是一模一样的。但是看上去貌似要更风骚一点。


我们JAVA代码中出现的最多的异常是什么,绝对是NullPointException,没有之一。因为对于Null的处理实在是太容易被忽略了。

在Guava中Optional类就是用来强制提醒青年们,注意对Null的判断。


Optional的另外几个方法

Optional<T>.of(T) 为Optional赋值,当T为Null直接抛NullPointException,建议这个方法在调用的时候直接传常量,不要传变量
Optional<T>.fromNullable(T) 为Optional赋值,当T为Null则使用默认值。建议与or方法一起用,风骚无比
Optional<T>.absent() 为Optional赋值,采用默认值
T or(T) 当Optional的值为null时,使用or赋予的值返回。与fromNullable是一对好基友
T get() 当Optional的值为null时,抛出IllegalStateException,返回Optional的值
boolean isPresent() 如果Optional存在值,则返回True
T orNull() 当Optional的值为null时,则返回Null。否则返回Optional的值
Set<T> asSet() 将Optional中的值转为一个Set返回,当然只有一个值啦,或者为空,当值为null时。


提问:

System.out.println(Optional.of(1).of(2).of(3).asSet().size());

会打印什么?

回答:1


Guava Optional 的应用