Spring通用(参数化类型)转换服务?

时间:2013-10-25 16:02:26

标签: java spring

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

转换适用于我们在为特定枚举类型定义Converter时使用的任何特定Enum类型。但是当我把它写成通用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 Enum足以让Spring通过此处发送所有Enum子类。

1 个答案:

答案 0 :(得分:-1)

在java体系结构设计中,枚举类型是最终的,你不应该在项目中创建一个扩展此类型的类。

参考:

link1

link2