是否可以使用泛型类扩展EnumMap?

时间:2018-07-27 01:27:18

标签: java generics

我开始相信不可能用Java扩展EnumMap,因为超级构造函数是有问题的。必须调用super()构造函数。

我在下面对super(...)的调用中试用了几种变体。它们都会产生语法错误。

  • 是否有可以按以下说明工作的解决方案?

意图

 abstract public class EnumModel<K extends Enum<K>, T>  extends EnumMap<K, T>
{

    protected EnumModel( ) {

       super( K.class );    //  <-- "Cannot select from a type variable"
    }
}

为对比起见,下面的示例将使用特定的Enum类型进行编译。但仅适用于枚举Colour

enum Colour{
   RED, BLACK, BLUE;
}

abstract public class EnumModel<T>  extends EnumMap<Colour, T>
{

    protected EnumModel( ) {

       super( Colour.class );    //  <-- will compile
    }
}

0 个答案:

没有答案