gpt4 book ai didi

java - 实例化通用类型的 EnumSet

转载 作者:搜寻专家 更新时间:2023-10-31 19:55:28 27 4
gpt4 key购买 nike

我有两个实现通用接口(interface)的枚举。我已尝试声明接口(interface),因此只有枚举可以实现它。

interface CommonEnumInterface<E extends Enum<?>> {

/** It doesn't matter what this does. */
E commonInterfaceMethod();

}

enum Enum1 implements CommonEnumInterface<Enum1> {
FOO,
BAR,
BAZ;

@Override
public Enum1 commonInterfaceMethod() {
return null;
}
}

enum Enum2 implements CommonEnumInterface<Enum2> {
BLAH,
YADDA,
RHUBARB;

@Override
public Enum2 commonInterfaceMethod() {
return Enum2.BLAH;
}
}

现在我想声明一个扩展 CommonEnumInterface 的泛型类型参数,这应该意味着泛型类型也是一个枚举:

class CreatingGenericEnumSet<E extends Enum<E> & CommonEnumInterface<E>> {

CreatingGenericEnumSet() {

// Is it possible to instantiate an EnumSet of a generic type?
EnumSet<E> enumSet = EnumSet.noneOf(E.class); // Illegal class literal

// According to a comment by @tackline, this is illegal, too.
Collection<E> hackyVariable = Collections.emptyList();
EnumSet<E> jankyWay = EnumSet.copyOf(hackyVariable);

}
}

我的问题在上面的评论中。有没有一种方法(最好是在一行中)来声明泛型类型的 EnumSet?

这是声明接口(interface)和类型参数的正确方法吗?

最佳答案

class CreatingGenericEnumSet<E extends Enum<E> & CommonEnumInterface<E>> {

CreatingGenericEnumSet(Class<E> enumClass) {

EnumSet<E> enumSet = EnumSet.<E>noneOf(enumClass);


}
}

类似问题可以找here

关于java - 实例化通用类型的 EnumSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21035510/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com