code: public static List<Method> getAllMethod(Class<?> clazz) {
          return ALL_METHOD_CACHE.compute(clazz, (key, value) -> {
              if (value == null) {
                  List<Method> methods = new ArrayList<>();
                  Map<String, Method> methodMap = getAllMethod(key, new HashMap<>());
  
                  methodMap.forEach((k, v) -> methods.add(v));
                  return methods;
              } else {
                  return value;
              }
          });
      }
docs: 获取指定类型和其父类型、接口中声明的所有方法（除了Object中声明的方法），如果对于方法M，类A中对方法M实现了M1，类B中
  对方法M实现了M2，类A继承了类B，传入参数为类A，那么返回的列表中将包含M1而不包含M2
  @param clazz 指定类型
  @return 指定类型和其父类型、接口中声明的所有方法（除了Object中声明的方法）