code: public static Object nextVersion(Class<? extends NextVersion> nextVersionClass, Object current) throws VersionException {
          try {
              NextVersion nextVersion;
              if (CACHE.containsKey(nextVersionClass)) {
                  nextVersion = CACHE.get(nextVersionClass);
              } else {
                  LOCK.lock();
                  try {
                      if (!CACHE.containsKey(nextVersionClass)) {
                          CACHE.put(nextVersionClass, nextVersionClass.newInstance());
                      }
                      nextVersion = CACHE.get(nextVersionClass);
                  } finally {
                      LOCK.unlock();
                  }
              }
              return nextVersion.nextVersion(current);
          } catch (Exception e) {
              throw new VersionException("获取下一个版本号失败!", e);
          }
      }
docs: 获取下一个版本
  
  @param nextVersionClass
  @param current
  @return
  @throws VersionException