Как преобразовать java string в enum converterfactory class to kotlin

Я не могу преобразовать следующий класс фабрики преобразователя для преобразования строки в типы перечисления весной 5 в kotlin. Пожалуйста, помогите мне.

@Component
public class StringToEnumConverterFactory 
  implements ConverterFactory<String, Enum> {

    private static class StringToEnumConverter<T extends Enum> 
      implements Converter<String, T> {

        private Class<T> enumType;

        public StringToEnumConverter(Class<T> enumType) {
            this.enumType = enumType;
        }

        public T convert(String source) {
            return (T) Enum.valueOf(this.enumType, source.trim());
        }
    }

    @Override
    public <T extends Enum> Converter<String, T> getConverter(
      Class<T> targetType) {
        return new StringToEnumConverter(targetType);
    }
}
2
0
415
1

Ответы 1

Я сделал нечто подобное:

class StringToEnumConverterFactory : ConverterFactory<String, Enum<*>?> {
    override fun <E : Enum<*>?> getConverter(clazz: Class<E>): Converter<String, E> {
        return StringToEnumConverter(clazz)
    }
}

class StringToEnumConverter<T : Enum<*>?>(private val enumClass: Class<T>) : Converter<String, T> {

    override fun convert(source: String): T? {
        if (source.isEmpty()) {
            return null
        }
        return enumClass.enumConstants.first { it!!.name == source.trim() }
    }
}

Надеюсь, это поможет!

Другие вопросы по теме