アップデート
Java 開発者がこの NullPointerException Hell をコードから削除するための Java ライブラリ (Maven Dependency) を作成しました。私のリポジトリをチェックしてください。
NullUtil リポジトリ
Java で Null 値を処理する汎用メソッド
<script src="https://gist.github.com/rcvaram/f1a1b89193baa1de39121386d5f865bc.js"></script>
そのオブジェクトが null でない場合、次のことを行います。
を。オブジェクトを変異させることができます (I)
b. オブジェクト (I) を変更する代わりに、何か (O) を出力として返すことができます。
c. 私たちは両方を行うことができます
この場合、オブジェクトである入力 param(I) を取得する必要がある関数を渡す必要があります。そのように取得すると、必要に応じてそのオブジェクトを変更できます。また、その関数は何か (O) である可能性があります。
オブジェクトが null の場合、次のことを行います
を。カスタマイズされた方法で例外をスローする場合があります
b. 何かを返すかもしれません。
この場合、オブジェクトは null であるため、値を提供する必要があるか、例外をスローする必要がある場合があります。
2つの例を挙げます。
- String でトリムを実行する場合、その文字列は null であってはなりません。その場合、null 値を追加でチェックする必要があります。そうしないと、NullPointerException が発生します。
public String trimValue(String s){
return s == null ? null : s.trim();
}
- そのオブジェクトがnullでない場合、オブジェクトに新しい値を設定したい別の関数。それ以外の場合は、ランタイム例外をスローします。
public void setTeacherAge(Teacher teacher, int age){
if (teacher != null){
teacher.setAge(age);
} else{
throw new RuntimeException("teacher is null")
}
}
私の説明では、値 (値は null の場合もあります) を取る汎用メソッド、オブジェクトが null でない場合に実行される関数、およびオブジェクトが null の場合に実行される別のサプライヤー関数を作成しました。
ジェネリック関数
public <I, O> O setNullCheckExecutor(I value, Function<I, O> nonNullExecutor, Supplier<O> nullExecutor) {
return value != null ? nonNullExecutor.apply(value) : nullExecutor.get();
}
したがって、この汎用関数を使用した後、サンプル メソッド 1 に対して次のように実行できます。
//To Trim a value
String trimmedValue = setNullCheckExecutor(value, String::trim, () -> null);
ここでは、nonNullExecutor Function が値をトリムします (メソッド リファレンスが使用されます)。nullExecutorFunction は識別関数であるため、null を返します。
2.
// mutate the object if not null otherwise throw a custom message runtime exception instead of NullPointerException
setNullCheckExecutor(teacher, teacher -> {
teacher.setAge(19);
return null;
}, () -> {
throw new RuntimeException("Teacher is null");
});