首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建具有泛型枚举字段的类。Enum字段用于获取枚举的值

创建具有泛型枚举字段的类。Enum字段用于获取枚举的值
EN

Stack Overflow用户
提问于 2014-03-20 18:05:36
回答 2查看 400关注 0票数 0

我需要类,我可以给出不同的枚举类型,在这个类中,我需要获得给定枚举的所有值。

这就是我试图做的,但是我有一个问题定义枚举字段的类型:

代码语言:javascript
复制
class MyClass{
  private Class<T> enumType; //how to say who is T?

  void <T extends Enum<T>> setEnumType(Class<T> enumType){
     this.enumType = enumType;
  }

  void doSomething(){
     for (Enum<T> literal : enumType.getEnumConstants()) {
         // do something with literal.name();
     }
  }
}

更新:我不能使类是通用的(MyClass<T extends Enum<T>>)。所以我需要其他解决办法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-27 06:44:57

最后,我实现了以下解决方案:

代码语言:javascript
复制
class MyClass{
  private Class<? extends Enum<?>> enumType;

  void <T extends Enum<T>> setEnumType(Class<T> enumType){
     this.enumType = enumType;
  }

  void doSomething(){
     for (Enum<?> literal : enumType.getEnumConstants()) {
         // do something with literal.name();
     }
  }

}

票数 0
EN

Stack Overflow用户

发布于 2014-03-20 18:08:50

像这样的东西应该可以工作(但是我建议在构造函数中传递enum类):

代码语言:javascript
复制
class MyClass<T extends Enum<T>> {
  private Class<T> enumType; 

  void setEnumType(Class<T> enumType){
     this.enumType = enumType;
  }

  void doSomething(){
     for (T literal : enumType.getEnumConstants()) {
         // do something with literal.name();
     }
  }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22541541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档