我正在尝试将 Java 泛型类型变量绑定(约束)为枚举(任何枚举)并且失败。你能告诉我为什么吗?
import org.supercsv.cellprocessor.ift.CellProcessor;
import org.supercsv.cellprocessor.ift.StringCellProcessor;
public class ParseEnum<TEnum extends Enum> extends CellProcessorAdaptor implements StringCellProcessor {
public Object execute(final Object value, final CsvContext context) {
...
final TEnum result;
if (value instanceof TEnum) {
result = (TEnum) value;
} else if( value instanceof String ) {
result = TEnum.valueOf((String)value);
} else {
...
}
...
}
(这些是我尝试扩展 SuperCSV CellProcessor 的实际代码。)
value instanceof TEnum
给了我这个错误(在 Eclipse 中):
“无法对类型参数 TEnum 执行 instanceof 检查。改用它的擦除枚举,因为更多的泛型类型信息将在运行时被擦除”
TEnum.valueOf((String)value)
给我这个错误:
“枚举类型中的方法 valueOf(Class, String) 不适用于参数 (String)”