I'm trying to bound (constrain) a Java generic type variable to be an enum (any enum) and failing. Might you be able to tell me why?
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 {
...
}
...
}
(These are bits of my actual code attempting to extend a SuperCSV CellProcessor. )
value instanceof TEnum
gives me this error (in Eclipse):
"Cannot perform instanceof check against type parameter TEnum. Use its erasure Enum instead since further generic type information will be erased at runtime"
TEnum.valueOf((String)value)
gives me this error:
"The method valueOf(Class, String) in the type Enum is not applicable for the arguments (String)"
Enum.valueOf
method takes two arguments! – Fries