Java Null Safeオプションの使用方法


NullSafeを使用してOptional関数を返す方法について説明します.
まず、戻り値がint/long/doubleの場合、OptionalInt/OptionalLong/OptionalDoubleを使用するとOptional<>を使用するよりも良いです.
次の例のgetSumOfNumは、リストに特定の数値を含む要素をフィルタリングすることによって加算される関数です.

サンプルコード

OptionalInt optionalSum = getSumOfNum("2");
Integer sumOfNum = optionalSum.orElse(0); // same as optionalSum == nul ? 0 : optionalSum;

public static OptionalInt getSumOfNum(String n) {
	List<String> strNum = List.of("144", "234", "222", "555", "777");
	    
 	Integer sumOfNum = strNum.stream()
                            .filter(x -> x.contains(n))
                            .mapToInt( value -> Integer.parseInt(value))
  			    .sum();
	    
	return sumOfNum == null ? OptionalInt.empty() : OptionalInt.of(sumOfNum);
    }
結論から言えばOptionalofNullable()の使用を避けるのは空の方法です.
合計がnullの場合、nullではなくOptionalIntになります.空()を返します.空でない場合はOptionalIntです.返却of()です.
関数受信値のOptionalSumをOptionalIntとして、sumOfNumのorElse()を使用します.
これがオプショナルofNullable()を使用しないのはNullの安全な方法です.

リファレンス


OptionalではOptionalof()はオプションです.ofNullable()とは異なり、nullでないと判定された場合にのみ使用されます.(nullが入るとNPEが吐き出されます.)