最近在写一个数据接口,业务宽表有60几个字段,在生成mysql表对应的实体类时可以借助idea的datasource工具导出成员变量,这倒是方便了不少。但是随后在接口输出对象时,遇到了成员变量的动态选择问题,因为有时候只需要几个成员变量的值,如果整个对象所有成员变量生成json会造成不必要的字段填充。这块就想到了根据成员变量名字,运用反射机制动态调用成员函数。比起整个类的反射,这个相对简单。
//参数instance可以随便传需要的对象实例,methodName是类的public方法名
private Object getMethodO(Object instance, String methodName) {
try {
Method get = instance.getClass().getMethod(methodName);
Object result = get.invoke(instance);
return result;
} catch (Exception e) {
logger.error(e.getMessage());
}
return null;
}