code: public static Method getAccessibleMethodByName(final Class clazz, final String methodName) {
  		Validate.notNull(clazz, "clazz can't be null");
  		Validate.notEmpty(methodName, "methodName can't be blank");
  
  		for (Class<?> searchType = clazz; searchType != Object.class; searchType = searchType.getSuperclass()) {
  			Method[] methods = searchType.getDeclaredMethods();
  			for (Method method : methods) {
  				if (method.getName().equals(methodName)) {
  					makeAccessible(method);
  					return method;
  				}
  			}
  		}
  		return null;
  	}
docs: 循环向上转型, 获取对象的DeclaredMethod,并强制设置为可访问.
  
  如向上转型到Object仍无法找到, 返回null.
  
  只匹配函数名, 如果有多个同名函数返回第一个
  
  方法需要被多次调用时，先使用本函数先取得Method，然后调用Method.invoke(Object obj, Object... args)
  
  因为getMethod() 不能获取父类的private函数, 因此采用循环向上的getDeclaredMethods()