Java8 Optional
Optionalとは
nullを包んで、値を操作するクラス
Optionalインスタンス生成
int i1 = 0;
Optional<Integer> i2 = Optional.of(i2);
非null判定
Integer i1 = 5;
Boolean isPresent = i1.isPresent(); // true
nullのOptionalインスタンス生成
Optional<Integer> i = Optional.empty(); // null
isPresent = i.isPresent(); // false
Stringクラスのnullとは違う
Optional<Integer> i = Optional.empty();
Boolean isNull = (i == null); // false
String s = null;
Boolean isNull = (s == null); // true
null時の代替値
Integer i1 = null;
Integer i2 = Optional.ofNullable(i1).orElse(-1); // -1
例
private final static List<Integer> list = Arrays.asList(new Integer[]{1, 2, null});
private static Optional<Integer> get(int index){
return Optional.ofNullable(list.get(index));
}
private static Integer get(int index){
return Optional.ofNullable(list.get(index)).orElse(0);
}
nullを除外するメソッドを利用して値を取得
Optional<Integer> i1 = get(0); // 1
Optional<Integer> i2 = get(1); // 2
Optional<Integer> i3 = get(2); // null
listからnullを除外して直接値を取得する
↑の様にメソッドでnullを除外する方が良い
Integer i4 = Optional.ofNullable(list.get(1)).orElse(-1); // 2
Integer i5 = Optional.ofNullable(list.get(2)).orElse(-1); // -1