このエントリーをはてなブックマークに追加

JavaDoc

nullの扱いをわかりやすくするクラス

staticメソッド

返り値 Optional<T>

nullだとabsent()falseになる。 get()しようとすると、 java.lang.IllegalStateExceptionが発生

値がnullだと java.lang.NullPointerExceptionが発生

返り値 Iterable<T>

        List<Optional<String>> optionals=Lists.newArrayList(Optional.of("hello"),Optional.<String>absent(),Optional.of("world"));
        Iterable<String> values=Optional.presentInstances(optionals);
        LogUtils.log(Lists.newArrayList(values).size());//size ==2 absentは除かれる。

メソッド

返り値 Set<T>

isPresent()とget()で値取り出す代わりに、値があれば処理する内容を記述する時に便利

for(String value:optiona.asSet()){
//do something
}

返り値 boolean

返り値 int

返り値 T

返り値 String

返り値 Optional<T>

返り値 Optional<V>

呼び出し元がabsentなら、ファンクションは呼び出されずにabsentなOptionalが返る。 また、Functionの結果がnullなら、NullPointerExceptionが発生

感想

引数で渡される場合

nullの場合にデフォルト値を入れるケースだと

if(title==null){title="default";}

よりは、スッキリする気がする。

String title=titleOptional.or("default");

ただ、値があるときだけ処理するケースだと

これより

if(title!=null){
//do something.
}

これの方がいいかは、好みの問題。まあ、!=より:の方がスッキリするけど

for(String title:titleOptional.asSet()){

}

三項演算子みたいなこともできる?
まあ、慣れの問題

String title=ref!=null?ref:"default";

String title=Optional.fromNullable(ref).or("default");

あるいは、toStringsのところで、軽く使うのもいいかも

return Optional.fromNullable(a.getId()).or("")+","+Optional.fromNullable(a.getTitle()).or("");