Java Optional型の使い方
Optional型とは
Null以外の値が含まれている場合も含まれていない場合もあるクラス
■Optional型の使用例
package sample;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
public class Main {
public static void main(String[] args) {
//テスト用にリストを用意
List<String> list = Arrays.asList("a", "bb", null);
//Optional型を使わない場合
for (String item : list) {
//If文でNullチェック
if (item != null) {
System.out.println(item.length());
}
}
//Optional型を使った場合
for (String item : list) {
//ofNullableメソッドで、引数をOptional型にラップ
Optional<String> optional = Optional.ofNullable(item);
//値がNullでない場合に文字数を出力
optional.ifPresent(op -> System.out.println(op.length()));
}
//Optional型・ラムダ式を使い、for文を使わない場合
list.forEach(item -> {
//ofNullableメソッドで、引数をOptional型にラップ
Optional<String> optional = Optional.ofNullable(item);
//値がNullでない場合に文字数を出力
optional.ifPresent(op -> System.out.println(op.length()));
});
}
}
■Optional型の代表的なメソッド
ofNullable
指定された値がNullでない場合はその値を記述するOptionalを返す
Nullの場合はは空のOptionalを返す
ifPresent
値がNullでない場合は処理を実行
orElse
値がNullでない場合は値を返す
値がNullの場合は引数を返す
flatMap
値がNullでない場合は指定されたOptional生成マッピング関数をその値に適用し、その結果を返す
値がNullの場合は空のOptionalを返す
List<Object> stream = customerList.stream().flatMap(e -> Stream.of(e.getId(), e)).collect(Collectors.toList());