作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我正在尝试为泛型类提供枚举,以便我可以迭代由提供的枚举类型参数定义的一组成员。我找到了一种方法来做到这一点,但为了使其工作,我需要提供枚举的任意实例。
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/
我是一名优秀的程序员,十分优秀!