code: public static Method filter(List<Method> methods, Class<?> declareClass) {
          if (declareClass == null) {
              return null;
          }
          Optional<Method> optional = methods.stream()
              .filter(method -> method.getDeclaringClass() == declareClass).limit(1).findFirst();
          return optional.orElse(filter(methods, declareClass.getSuperclass()));
      }
docs: 过滤方法，选出最靠近声明类的方法，例如对于方法M，类A中对方法M实现了M1，类A继承了类B，类B中对方法M实现了M2，使用类A作
  为declareClass，集合中包含M1和M2，那么最终将返回M1而不是M2
  @param methods 方法集合
  @param declareClass 声明类（最底层的子类）
  @return 方法集合中最接近声明类的方法