guava-librariesソースコードリーディング2回目
http://code.google.com/p/guava-libraries/wiki/UsingAndAvoidingNullExplained
このドキュメントを見る限り、Optionalって、ScalaのOptionと同じかな?
Scalaはちょっと触っただけで放置中なので、断言できないけど。
まあ、ソースを見てみるか。
Making an Optionalの3メソッド
Optional.of(T)、Optional.absent()、Optional.fromNullable(T)
を見てみる。
最初は、Optional.of(T)。
public static
return new Present
}
checkNotNullって?
public static
if (reference == null) {
throw new NullPointerException();
}
return reference;
}
ふむ。nullチェックですか。
Presentって?
private static final class Present
ふむ。Optionalのサブクラスね。
お次は、Optional.absent()。
public static
return (Optional
}
private static final class Absent extends Optional
最後は、Optional.fromNullable(T)。
public static
return (nullableReference == null)
? Optional.
: new Present
}
ふむ。nullならAbsentを、nullじゃなければPresentを返す。
ということは、
AbsentはNullオブジェクトであり、ScalaのNoneにあたる。
Presentは、必ずnullじゃない値を持っていて、ScalaのSameにあたる。
って事か。