我正在尝试创建一个通用的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子类。