docs: public static Set<Class<?>> getClassSet(String packageName) {
          try {
              Set<Class<?>> classSet = new HashSet<>();
              Enumeration<URL> urls = getClassLoader().getResources(packageName.replace(".", "/"));
              while (urls.hasMoreElements()) {
                  URL url = urls.nextElement();
                  if (Objects.isNull(url)) {
                      continue;
                  }
                  // 获取此 URL 的协议名称。
                  String protocol = url.getProtocol();
                  if ("file".equals(protocol)) {
                      // %20 表示file协议?
                      String packagePath = url.getPath().replaceAll("%20", " ");
                      addClass(classSet, packagePath, packageName);
                  } else if ("jar".equals(protocol)) {
                      JarURLConnection jarURLConnection = (JarURLConnection) url.openConnection();
                      if (Objects.isNull(jarURLConnection)) {
                          continue;
                      }
                      JarFile jarFile = jarURLConnection.getJarFile();
                      if (Objects.isNull(jarFile)) {
                          continue;
                      }
                      Enumeration<JarEntry> jarEntries = jarFile.entries();
                      while (jarEntries.hasMoreElements()) {
                          JarEntry jarEntry = jarEntries.nextElement();
                          String jarEntryName = jarEntry.getName();
                          if (jarEntryName.endsWith(".class")) {
                              String className = jarEntryName.substring(0, jarEntryName.lastIndexOf(".")).replaceAll("/",
                                      ".");
                              doAddClass(classSet, className);
                          }
                      }
                  }
              }
              return classSet;
          } catch (IOException e) {
              throw new RuntimeException(e);
          }
      }