如何通过Java反射判断对象方法是否存在并执行?
- 内容介绍
- 文章标签
- 相关推荐
本文共计260个文字,预计阅读时间需要2分钟。
javapublic class MethodChecker { /** * 判断某个对象的方法是否存在,并反射执行此方法 * @param methodName 方法名称 * @param obj 源对象 * @param args 执行方法时需要传入的参数(按方法需要的参数顺序) */ private Object invokeMethod(String methodName, Object obj, Object... args) { // 获取对象类类型 Class clazz=obj.getClass(); // 获取方法 Method method=null; try { method=clazz.getMethod(methodName, getParameterTypes(args)); } catch (NoSuchMethodException e) { System.out.println(方法 + methodName + 不存在); return null; } // 执行方法 try { return method.invoke(obj, args); } catch (Exception e) { System.out.println(执行方法 + methodName + 时出错: + e.getMessage()); return null; } }
/** * 获取参数类型数组 * @param args 参数列表 * @return 类型数组 */ private Class[] getParameterTypes(Object[] args) { Class[] types=new Class[args.length]; for (int i=0; i java 判断某个对象的方法是否存在,并反射执行此方法
/** * methodName 方法的名称 * obj 源对象 * args 执行时要传入的参数(按方法需传入的参数顺序), */ private Object invokeMethod(String methodName,Object obj,Object... args) { Object returnObj = null; try { Class [] clazz = new Class[args.length]; for(int i=0;i
本文共计260个文字,预计阅读时间需要2分钟。
javapublic class MethodChecker { /** * 判断某个对象的方法是否存在,并反射执行此方法 * @param methodName 方法名称 * @param obj 源对象 * @param args 执行方法时需要传入的参数(按方法需要的参数顺序) */ private Object invokeMethod(String methodName, Object obj, Object... args) { // 获取对象类类型 Class clazz=obj.getClass(); // 获取方法 Method method=null; try { method=clazz.getMethod(methodName, getParameterTypes(args)); } catch (NoSuchMethodException e) { System.out.println(方法 + methodName + 不存在); return null; } // 执行方法 try { return method.invoke(obj, args); } catch (Exception e) { System.out.println(执行方法 + methodName + 时出错: + e.getMessage()); return null; } }
/** * 获取参数类型数组 * @param args 参数列表 * @return 类型数组 */ private Class[] getParameterTypes(Object[] args) { Class[] types=new Class[args.length]; for (int i=0; i java 判断某个对象的方法是否存在,并反射执行此方法
/** * methodName 方法的名称 * obj 源对象 * args 执行时要传入的参数(按方法需传入的参数顺序), */ private Object invokeMethod(String methodName,Object obj,Object... args) { Object returnObj = null; try { Class [] clazz = new Class[args.length]; for(int i=0;i

