code: @SneakyThrows
      @SuppressWarnings("unchecked")
      public static <T extends ShardingAlgorithm> T newInstance(final String shardingAlgorithmClassName, final Class<T> superShardingAlgorithmClass) {
          Class<?> result = Class.forName(shardingAlgorithmClassName);
          if (!superShardingAlgorithmClass.isAssignableFrom(result)) {
              throw new ShardingException("Class %s should be implement %s", shardingAlgorithmClassName, superShardingAlgorithmClass.getName());
          }
          return (T) result.newInstance();
      }
docs: Create sharding algorithm.
  
  @param shardingAlgorithmClassName sharding algorithm class name
  @param superShardingAlgorithmClass sharding algorithm super class
  @param <T> class generic type
  @return sharding algorithm instance