java方法的反射调用
通过方法名字符串调用对应方法
已知类、方法名字符串、需要的参数。
调用:
// 传参
Map<String, Object> myMap = new HashMap<>(6);
myMap.put("flag", flag);
// 反射调用本实例类的"delCaiLiao_qj"方法,instance为本实例类,myMap为传参
ControlledStage.toDoFromRelease(instance, “delCaiLiao_qj”, myMap);
反射调用的方法:
public static <T> void toDoFromRelease(T pss, String methodName, Map<String, Object> myMap) {
try {
// 参数获得的都是class对象——Class.forName("java.lang.String")、int.class、Boolean.class、PersonStatisticsController.class
Method method = pss.getClass().getMethod(methodName, Map.class);
method.invoke(pss, myMap);
log.info("反射调用成功!");
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
log.error("反射调用抛出异常!", e);
e.printStackTrace();
}
}
被调用的方法:
public void delCaiLiao_qj(Map<String,Object> myMap){
boolean flag = (boolean) myMap.get("flag");
......
}