0
您好我想提供一个泛型类的枚举,所以我可以遍历由提供的枚举类型参数定义的一组成员。我找到了一种方法来做到这一点,但为了它的工作,我需要提供一个任意的枚举实例。从类型参数枚举Enum类
public enum suits {
spades,
hearts,
diamonds,
clubs;
}
public static class Card<E extends Enum<E>> {
public final EnumSet<E> suits;
public Card(E instance) {
EnumSet<E> mySet = EnumSet.allOf(instance.getDeclaringClass());
this.suits = mySet;
}
}
现在我可以做这样的事情:
Card<Suits> myCard = new Card<Suits>(Suits.clubs);
String names = "";
for (Suit s : myCard.suits) {names += s.name + "|";} // "spades|hears|diamonds|clubs|
这里有一个问题:我能做到这一点,而不在卡对象构造提供枚举的实例?
我倒觉得应该工作是创建枚举当与类型参数取代instance.getDeclaringClass(),如:
EnumSet<E> mySet = EnumSet.allOf(E);
,但给人的语法错误。不知何故,似乎应该可以获得类型类型参数,而不必诉诸于提供枚举实例,然后调用getDeclaringClass()。
因此,无法从范围为枚举类型的类型参数派生实例或Class对象。 – user1023110 2014-10-20 02:54:25
没有。泛型在运行时不存在。 – 2014-10-20 15:16:59