code: public FastClass getFastClass(Class<?> clazz) {
          String clazzName = clazz.getName();
          FastClass fc = fastClassCache.get(clazzName);
          if (null == fc) {
              synchronized (clazz) { // 进行锁控制
                  fc = fastClassCache.get(clazzName); // double check
                  if (fc != null) {
                      return fc;
                  }
                  // 更新methodCache和fastMethodCache
                  fc = FastClass.create(clazz);
                  String className = clazz.getName();
                  Method[] methods = clazz.getMethods();
                  for (Method m : methods) {
                      String key = buildMethodKey(className, m.getName(), m.getParameterTypes());
                      methodCache.put(key, m);
                      fastMethodCache.put(key, fc.getMethod(m));
                  }
                  allMethodCache.put(clazzName, methods);
                  fastClassCache.put(clazzName, fc);
              }
              // 再取一次cache
              return fastClassCache.get(clazzName);
          } else {
              return fc;
          }
      }
docs: 获取对应的fastClass
  
  @param clazz
  @return