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 チェックを実行できません。実行時にさらにジェネリック型情報が消去されるため、代わりにその消去 Enum を使用してください」
TEnum.valueOf((String)value)
このエラーが表示されます:
「Enum 型のメソッド valueOf(Class, String) は、引数 (String) には適用できません」