code: public static Method findMethodByMethodSignature(Class<?> clazz,
  			String methodName, String[] parameterTypes)
  			throws NoSuchMethodException, ClassNotFoundException {
  		String signature = methodName;
  		if (parameterTypes != null && parameterTypes.length > 0) {
  			signature = methodName + StringUtils.join(parameterTypes);
  		}
  		Method method = Signature_METHODS_CACHE.get(signature);
  		if (method != null) {
  			return method;
  		}
  		if (parameterTypes == null) {
  			List<Method> finded = new ArrayList<Method>();
  			for (Method m : clazz.getMethods()) {
  				if (m.getName().equals(methodName)) {
  					finded.add(m);
  				}
  			}
  			if (finded.isEmpty()) {
  				throw new NoSuchMethodException("No such method " + methodName
  						+ " in class " + clazz);
  			}
  			if (finded.size() > 1) {
  				String msg = String
  						.format("Not unique method for method name(%s) in class(%s), find %d methods.",
  								methodName, clazz.getName(), finded.size());
  				throw new IllegalStateException(msg);
  			}
  			method = finded.get(0);
  		} else {
  			Class<?>[] types = new Class<?>[parameterTypes.length];
  			for (int i = 0; i < parameterTypes.length; i++) {
  				types[i] = ReflectUtils.name2class(parameterTypes[i]);
  			}
  			method = clazz.getMethod(methodName, types);
  
  		}
  		Signature_METHODS_CACHE.put(signature, method);
  		return method;
  	}
docs: 根据方法签名从类中找出方法。
  
  @param clazz
  查找的类。
  @param methodName
  方法签名，形如method1(int, String)。也允许只给方法名不参数只有方法名，形如method2。
  @return 返回查找到的方法。
  @throws NoSuchMethodException
  @throws ClassNotFoundException
  @throws IllegalStateException
  给定的方法签名找到多个方法（方法签名中没有指定参数，又有有重载的方法的情况）