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