我正在尝试使用反射来确定运行时需要调用哪种方法。 我使用下面的代码来实现相同的目的:
private Method getSetterMethod(Object tempVar, Object genericDTO, String field) {
Method getterMethod1 = null;
if(tempVar instanceof String)
getterMethod1 = genericDTO.getClass().getMethod("set" + field.substring(0, 1).toUpperCase() + field.substring(1), String.class);
else if(tempVar instanceof Integer)
getterMethod1 = genericDTO.getClass().getMethod("set" + field.substring(0, 1).toUpperCase() + field.substring(1), Integer.class);
else if(tempVar instanceof String[])
getterMethod1 = genericDTO.getClass().getMethod("set" + field.substring(0, 1).toUpperCase() + field.substring(1), String[].class);
else if(tempVar instanceof Boolean)
getterMethod1 = genericDTO.getClass().getMethod("set" + field.substring(0, 1).toUpperCase() + field.substring(1), Boolean.class);
return getterMethod1;
}
}
根据tempVar做出决定。我希望能够直接从tempVar返回String.class,以便避免多个if-else-if块。 现在,tempVar.getClass()仅返回String。是否有一种方法输出类似于String.class的内容,而不是简单地输出String。
答案 0 :(得分:1)
你可以做
if (!Arrays.asList(String.class,String[].class, Boolean.class, Integer.class).contains(tempVar.getClass())){
return null;
}
return genericDTO.getClass().getMethod("set" + field.substring(0, 1).toUpperCase() + field.substring(1), tempVar.getClass());