背景
生产系统为前后台没有分离的应用,前台调后台是通过传对象名称、对象方法通过反射执行,返回结果。
某次生产事故由于方法放在父类中,导致生产抛java.lang.NoSuchMethodException
知识点
获取当前类、继承类的所有public方法
使用getMethod
获取当前类所有public、protected、private方法
使用getDeclaredMethod()
获取当前类、继承类所有public、protected、private方法
使用getDeclaredMethodWithParent
getDeclaredMethodWithParent工具方法
public static Method getDeclaredMethodWithParent(Class targetClass,String methodName, Class<?>... parameteTypes) {
Boolean doneFlag=false;
Class curClass=targetClass;
Method declaredMethod=null;
while (!doneFlag && curClass!=Object.class){
try {
declaredMethod = curClass.getDeclaredMethod(methodName, parameteTypes);
} catch (NoSuchMethodException e) {
doneFlag=false;
curClass=curClass.getSuperclass();
continue;
}
doneFlag=true;
}
if(declaredMethod==null){
throw new NoSuchMethodException( methodName);
}
return declaredMethod;
}