public static <T> T invokeMethod(final Object obj, final String methodName, final Object[] args,
			final Class<?>[] parameterTypes) {
		Method method = getMethod(obj.getClass(), methodName, parameterTypes);
		if (method == null) {
			throw new IllegalArgumentException("Could not find method [" + methodName + "] with parameter types:"
					+ ObjectUtil.toPrettyString(parameterTypes) + " on class [" + obj.getClass() + ']');
		}
		return invokeMethod(obj, method, args);
	}
public static < T > T invokeMethod ( final Object obj , final String methodName , final Object [ ] args , final Class < ? > [ ] parameterTypes ) { Method method = getMethod ( obj . getClass ( ) , methodName , parameterTypes ) ; if ( method == null ) { throw new IllegalArgumentException ( "Could not find method [" + methodName + "] with parameter types:" + ObjectUtil . toPrettyString ( parameterTypes ) + " on class [" + obj . getClass ( ) + ']' ) ; } return invokeMethod ( obj , method , args ) ; }
反射调用对象方法, 无视private/protected修饰符.

根据参数类型参数进行匹配, 支持方法参数定义是接口，父类，原子类型等情况

性能较低，仅用于单次调用.