JavaのOptional
table:nullチェックの必要有無
メソッド nullチェック
nullを返しうる 必要
nullを返さない 不要
問題点:Javaだとメソッドの返り値がオブジェクトだと、nullが入るのか入らないのかわからない
対策:Optionalクラスでラップして返す。そうするとチェックが必要な仕様になる
メソッド側: Optional<T>を返す
code:optMethod.java
public Optional<Parts> find2(String code) {
var parts = partsDB.get(code);
return Optional.ofNullable(parts);
}
呼び出し側: Optional<T>からTを取り出す
code:optCall.java
// 例1
var parts2 = searcher.find2("xxx").orElseThrow();
// 例2
var opt = searcher.find2("xxx");
if (opt.isEmpty()) { ... }
var parts = opt.get();
1. メソッドの戻り値の型として使用する。
2. Optional 型自身の変数は、決して null にしてはならない。
null を返すことがあるメソッドは、必ず Optional を使う
逆に言うと、Optionalではないメソッドは null を返してはいけない
というルールを設けてみるのもよいかもしれません。
参考文献
public.icon