使用场景:
项目中不同模块对某些数据的权限控制是不一样,此时可以利用Java的反射机制来实现动态的权限检测,减少代码的耦合性。
主要代码:
//targetNameMethodStr:XX.XX.XXX的路径地址
String targetNameMethod = targetNameMethodStr.substring(targetNameMethodStr.lastIndexOf(".") + 1);
String className = targetNameMethodStr.substring(0, targetNameMethodStr.lastIndexOf("."));
try {
Class clazz = Class.forName(className);
Method method = clazz.getDeclaredMethod(targetNameMethod, String.class,int.class,int.class,User.class);
boolean isAuthorize = (boolean) method.invoke(clazz.newInstance(), fMReplyFName,fieldid,formmodebillId,user);
rs.writeLog("isAuthorize()执行返回结果:"+isAuthorize);
return isAuthorize;
} catch (Exception e) {
e.printStackTrace();
return false;
}
知识点:
getDeclaredMethod
invoke