public static <T extends Enum> T getEnumElementByValue(final Class<T> enumClass, final String value, Function<? super Enum, String> show) {
    for (final T t : enumClass.getEnumConstants()) {
      if (Objects.equals(value, show.fun(t))) {
        return t;
      }
    }
    return null;
  }
public static <T extends Enum> T getEnumElementByValue(final Class<T> enumClass, final String value, Function<? super Enum, String> show)