您好我正在尝试为泛型类提供枚举,因此我可以迭代由提供的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|
以下是问题:我可以在不提供Card对象构造函数中的枚举实例的情况下执行此操作吗?
我认为应该工作的是在创建枚举时用instance参数替换instance.getDeclaringClass(),如:
EnumSet<E> mySet = EnumSet.allOf(E);
但是这会产生语法错误。不知何故,似乎应该可以获取类型类型参数,而不必求助于提供枚举实例然后调用getDeclaringClass()。
答案 0 :(得分:1)
你可以传入Suits.class
,但是你需要一个或另一个 - 枚举类型的实例,或枚举类型的Class
对象。