gpt4 book ai didi

java - 从类型参数枚举 Enum 类

转载 作者:行者123 更新时间:2023-12-01 12:24:37 25 4
gpt4 key购买 nike

您好,我正在尝试为泛型类提供枚举,以便我可以迭代由提供的枚举类型参数定义的一组成员。我找到了一种方法来做到这一点,但为了使其工作,我需要提供枚举的任意实例。

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.getDeclaringClass(),如下所示:

EnumSet<E> mySet = EnumSet.allOf(E);

但这会产生语法错误。不知何故,似乎应该可以获取类型类型参数,而不必提供枚举实例,然后调用 getDeclaringClass()。

最佳答案

您可以传入 Suits.class,但您需要其中之一 - 枚举类型的实例,或枚举类型的 Class 对象.

关于java - 从类型参数枚举 Enum 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26456873/

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