ソフト開発のトピックス-PR-
詳解 Java SE 8 第11回 nullチェックとOptional
前回までの解説でまだ紹介していないStreamインタフェースのメソッドは、いずれも戻り値の型がOptionalクラスという共通点があります。
Optionalクラスは、Java SE 8で導入された新しい概念を表すクラスです。そこで、今回はストリームのメソッドを紹介する前に、このOptionalクラスについて紹介します。
Optionalクラス
Javaでコードを書いていると、どうしても避けて通れないのがnullチェックです。
たとえば、リスト1のようにメソッドの戻り値のnullチェックを行うなど、頻繁に書かなくてはならないですし、目にすることも少なくありません。
リスト1 典型的なnullチェック
Bar bar = foo();
if (bar != null) {
// 正常な場合の処理
} else {
// nullの場合の処理
}
もちろん、nullチェックは防御的プログラミングのテクニックとしてよく知られたものですし、ソフトウェアのロバスト性を高めるためにも必要です。
しかし、nullチェックは本来行いたい処理ではないため、コードの可読性を低下させてしまうことも事実です。
なるべくシンプルにnullチェックに代わる方法ということで、Java SE 8で導入されたのがjava.util.Optionalクラスです。
Optionalクラスの概念はJava特有というわけではありません。ScalaのOptionクラスやHaskellのMaybe型などの概念をJavaに導入したのがOptionalクラスということができます。
Optionalクラスは値を一つだけ保持できるイミュタブルのコンテナということができます。値を保持している場合もありますし、保持していない場合もあります。値を保持していない場合が、今までの手法のnullに相当すると考えられます。
連載新着連載目次へ >>
- 詳解 Java SE 8 第10回 Stream API その6 (2014/07/18)
- 詳解 Java SE 8 第9回 Stream API その5 (2014/07/04)
- 詳解 Java SE 8 第8回 Stream API その4 (2014/06/20)
- 詳解 Java SE 8 第7回 Stream API その3 (2014/06/06)
この記事に対するつぶやき (自分もつぶやく)
@nikkeibpITpro
この記事に対するfacebookコメント
nikkeibpITpro