引数が null の場所をチェックし、null の場合はその型の新しいオブジェクトを返すメソッドを書きたいと思います。次のようになります。
public static <T> T checkNull(T obj) {
if (null == obj) return someHowCreateTheObjectWithTypeT();
else return obj;
}
苦労して掘り下げた後、私はまだこれを達成する方法を得ることができません.Javaで実際に可能ですか?
私は最初に反省について考えました。しかし、オブジェクトが null の場合は Class インスタンスを取得できず、型 T の名前なしで Class を作成することはできません...
アップデート:
クラスをパラメーターとして渡すことを考えましたが、次の回答が示すように、それは最善の解決策ではありません:)
私の現在の解決策は、defaultValue パラメータを使用することです。
public static <T> T checkNull(T obj, T defaultValue) {
if (null == obj) return defaultValue;
return obj;
}
これは、リフレクション ソリューションよりも高速で安全であり、同じ詳細です。しかし、すべてのタイプの対象に対して体系的に DEFAULT_VALUE を指定する必要があり、これは簡単な作業ではありません。