首页 > 解决方案 > 如何将 Java String 转换为 Enum ConverterFactory 类到 Kotlin

问题描述

我无法将以下转换器工厂类转换为将 spring 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);
    }
}

标签: javaspringenumskotlin

解决方案


我做了类似的事情:

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() }
    }
}

我希望这有帮助!


推荐阅读