我有两个实现通用接口的枚举.我试图声明接口,所以只有枚举才能实现它.
interface CommonEnumInterface> {
/** It doesn't matter what this does. */
E commonInterfaceMethod();
}
enum Enum1 implements CommonEnumInterface {
FOO,
BAR,
BAZ;
@Override
public Enum1 commonInterfaceMethod() {
return null;
}
}
enum Enum2 implements CommonEnumInterface {
BLAH,
YADDA,
RHUBARB;
@Override
public Enum2 commonInterfaceMethod() {
return Enum2.BLAH;
}
}
现在我想声明一个扩展CommonEnumInterface的泛型类型参数,这应该意味着泛型类型也是一个枚举:
class CreatingGenericEnumSet & CommonEnumInterface> {
CreatingGenericEnumSet() {
// Is it possible to instantiate an EnumSet of a generic type?
EnumSet enumSet = EnumSet.noneOf(E.class); // Illegal class literal
// According to a comment by @tackline, this is illegal, too.
Collection hackyVariable = Collections.emptyList();
EnumSet jankyWay = EnumSet.copyOf(hackyVariable);
}
}
我的问题在上面的评论中.是否有一种方法,最好是在一行中,声明一个泛型类型的EnumSet?
这是声明接口和类型参数的正确方法吗?