标签:style io 使用 java ar 代码 sp on line
今天老板让普通青年和文艺青年分别写一段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
标签:style io 使用 java ar 代码 sp on line
原文地址:http://my.oschina.net/readjava/blog/309265