我想编写一个方法来检查参数在哪里为空,如果是,则返回该类型的新对象。看起来像:
public static <T> T checkNull(T obj) {
if (null == obj) return someHowCreateTheObjectWithTypeT();
else return obj;
}
经过一番挣扎和挖掘,我仍然无法实现这一点,在java中它真的可能吗?
一开始我想到了反思。但是当对象为空时,我无法获得 Class 实例,并且如果没有类型 T 的名称,您将无法创建 Class...
更新:
我考虑过将 Class 作为参数传递,但这不是最好的解决方案,如下面的答案所示:)
我当前的解决方案是使用 defaultValue 参数:
public static <T> T checkNull(T obj, T defaultValue) {
if (null == obj) return defaultValue;
return obj;
}
这比反射解决方案更快、更安全,并且同样冗长;但是我必须系统地为所有类型的兴趣指定一个 DEFAULT_VALUE,这不是一件容易的事。