/** * {@link #getParameterNames(String, Class[])}不显式抛出异常版本 * @param name * @param parameterTypes * @return */ public final String[] getParameterNamesUnchecked(String name, Class<?>[] parameterTypes) { try { return getParameterNames(name, parameterTypes); } catch (NoSuchMethodException e) { throw new RuntimeException(e); } } }
/** * 获取构造函数或方法的参数名<br> * {@code name}为{@code null}时,获取构造函数的参数名 * @param name 方法名 * @param parameterTypes 构造函数或方法的参数类型 * @return * @throws NoSuchMethodException * @see #getParameterNames(String, Class) */ public final String[] getParameterNames(String name, Class<?>[] parameterTypes) throws NoSuchMethodException { if(null == clazz){ return null; } try { Member member = null == name ? clazz.getConstructor(parameterTypes) : clazz.getMethod(name, parameterTypes); return getParameterNames(member); } catch (SecurityException e) { throw new IllegalArgumentException(e); } } /**
/** * 获取构造函数或方法的参数名 * @param member 构造函数或方法对象 * @return * @see #getParameterNames(ChainedParamReader, Member) */ public final String[] getParameterNames(Member member) { if(null == clazz){ return null; } Assert.notNull(member, "member"); Class<?> declaringClass = member.getDeclaringClass(); ChainedParamReader reader; if (null == (reader = readers.get(declaringClass))) { throw new IllegalArgumentException(String.format("%s is not member of %s", member.toString(), declaringClass.getName())); } return getParameterNames(reader, member); }
private static final Method getMethod(java.lang.reflect.Method[] methods, String signature) { Assert.notEmpty(signature, "signature"); for (java.lang.reflect.Method m : methods) { if (Method.getSignature(m).equals(signature)){ ParameterNames pt = new ParameterNames(m.getDeclaringClass()); try { return new Method(m,pt.getParameterNames(m.getName(), m.getParameterTypes())); } catch (NoSuchMethodException e) { throw new RuntimeException(e); } } } return null; } public final Method getMethod(Class<?> clazz, String signature) {