Java 当定义为泛型类param时,如何获取枚举的valueOf&值及其在接口上实现的调用方法
我想将字符串转换为一组枚举类型的枚举。我使用一个接口来标记要转换的枚举集,并定义转换过程中使用的两个方法:Java 当定义为泛型类param时,如何获取枚举的valueOf&值及其在接口上实现的调用方法,java,spring,generics,enums,Java,Spring,Generics,Enums,我想将字符串转换为一组枚举类型的枚举。我使用一个接口来标记要转换的枚举集,并定义转换过程中使用的两个方法: public interface SymbolEnum { String getCode(); String getDescription(); } 下面是我希望从字符串派生的枚举类型之一的示例: 如果字符串与枚举常量名称、枚举代码属性或枚举描述属性匹配,则我希望转换为该枚举。否则,代码将引发IllegalArgumentException 我正在使用Spr
public interface SymbolEnum {
String getCode();
String getDescription();
}
下面是我希望从字符串派生的枚举类型之一的示例:
如果字符串与枚举常量名称、枚举代码属性或枚举描述属性匹配,则我希望转换为该枚举。否则,代码将引发IllegalArgumentException
我正在使用Spring的转换器接口来实现我的转换器。转换器被参数化为转换器。我应该用什么做T?我知道T应该扩展Enum并实现SymbolEnum。以下是我尝试过的:
public class StringToSymbolEnum<T extends Enum<?> & SymbolEnum> implements Converter<String, T> {
@Override
public T convert(String source) {
try {
return T.valueOf(source); // compile error
} catch (IllegalArgumentException notEnumConstant) {
for (Enum enum : T.values()) { // compile error
if (T.getDescription().equalsIgnoreCase(source) // compile error
|| T.getCode().equalsIgnoreCase(source)) { // compile error
return T;
}
}
throw notEnumConstant;
}
}
}
您需要将枚举的描述传递给StringToSymbolEnum构造函数。可能是在Enum.valueOf中使用的类,也可能是来自值的T[] 注:T应定义为:
T extends Enum<T> & SymbolEnum
而不是使用通配符。要添加,可以使用类对象中的.getEnumConstants,而不是T.values
T extends Enum<T> & SymbolEnum