0

我正在尝试为 Spring 创建一个通用转换器,它将允许传入的枚举值混合大小写并在映射到枚举之前转换为上。

当为特定枚举类型定义转换器时,该转换适用于我们使用的任何特定枚举类型。然而,当我把它写成一个通用的 Spring 从不调用代码时。

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

// Doesn't work, Spring doesn't appear to allow Converters with type parameters :-(
@Component
public class StringToEnumConverter <T extends Enum> implements Converter<String, T> {

    @Override
    public T convert(String string) {
        Type type = ((ParameterizedType)StringToEnumConverter.class.getGenericSuperclass()).getActualTypeArguments()[0];
        return (T) Enum.valueOf((Class<T>)type, string.trim().toUpperCase());
    }
}

是代码不正确还是 Spring 不知道如何在运行时匹配类型?我希望T extends EnumSpring 有足够的信息通过这里发送所有 Enum 子类。

4

1 回答 1

-2

枚举类型在 Java 架构设计中是最终类型,您不应在项目中创建扩展此类型的类。

参考:

链接1

链接2

于 2013-10-25T17:34:24.217 回答