【備忘録】JavaのOptionalについて
はじめに
Optionalについて自分なりの理解を備忘録として執筆します。
Optionalとは
値をラップしてその値がnullである可能性を表現するクラス。
NullPointerExceptionを防ぐことができる。
Optionalを使う理由
nullである可能性のあるメソッドを呼ぶ場合、事前にnullかどうかのチェックを実装する必要がある。
しかし、実装を忘れてしまう可能性がある。
実装を忘れることを防止するためにOptionalが利用される。
ソースコードで確認
ofNullableメソッドを利用して、Optionalが型のオブジェクトを作成する。
If文の中でisPresent関数を利用して、値が存在しているときのみlengthメソッドを実行している。
この時、変数strの中身はnullであるため実行してもコンソール上にはなにも表示されない。
String str=null;
Optional<String>strOpt=Optional.ofNullable(str);
if(strOpt.isPresent()) {
String message=strOpt.get();
System.out.println(message.length());
}
if文を利用しないでnullチェックする方法はラムダ式を用いて下記のように記載することもできる。
strOpt.ifPresent(v->System.out.println(v.length()));
値として受け取る場合
map関数を利用する。
mapメソッドの戻り値は、ラムダ式の戻り値をラップしたOptionalとなる。(この場合はInteger型のOptionalが返ってくる)
strOptの値が存在しない場合、値を持たないOptionalオブジェクトが返ってくる。
Optional<String>strOpt=Optional.ofNullable(str);
Optional<Integer>lengthOpt=strOpt.map(v->v.length());
参考
Author And Source
この問題について(【備忘録】JavaのOptionalについて), 我々は、より多くの情報をここで見つけました https://qiita.com/mitsu_hrk87/items/f5863792a3a86bd3b1a2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .