docs: public static <T extends Annotation> Set<Method> getAnnotatedPublicMethods(Class<?> clazz, Class<T> annotation) {
  		// 已递归到Objebt.class, 停止递归
  		if (Object.class.equals(clazz)) {
  			return Collections.emptySet();
  		}
  
  		List<Class<?>> ifcs = ClassUtils.getAllInterfaces(clazz);
  		Set<Method> annotatedMethods = new HashSet<Method>();
  
  		// 遍历当前类的所有公共方法
  		Method[] methods = clazz.getMethods();
  
  		for (Method method : methods) {
  			// 如果当前方法有标注，或定义了该方法的所有接口有标注
  			if (method.getAnnotation(annotation) != null || searchOnInterfaces(method, annotation, ifcs)) {
  				annotatedMethods.add(method);
  			}
  		}
  
  		return annotatedMethods;
  	}