枚举在类中时的Java枚举反射

时间:2015-10-19 18:35:49

标签: java reflection enums

我有多个类的实例,其中嵌入了一个枚举。这是所述类的简化版本:

public class FirstClass extends BaseClass {

  public enum EnumGroup {
      ONE("one"),
      TWO("two");

      private String mName;

      EnumGroup(String name) {
        this.mName = name;
      }

      public String getName() {
        return mName;
      }  
  }

  // FirstClass methods
}

我的目标是以编程方式迭代这些类(即FirstClass,SecondClass等)并拉出枚举(总称为“EnumGroup”)并在枚举的每个值上调用方法getName()。

我在Java反射和枚举上查看了这个StackOverflow post,但是当我尝试通过指定路径(com.package.FirstClass.EnumGroup)来获取我的枚举时,我得到了一个ClassNotFoundException。我猜想把课堂上的枚举搞砸了。

Class<?> clz = Class.forName("com.package.FirstClass.EnumGroup");

我不一定需要这个设置,但最终目标是在每个迭代enum的类中都没有相同的代码。

1 个答案:

答案 0 :(得分:8)

由于您使用的是Class.forName,因此您需要使用类的 name ,并且在类名中,内部类型与$的外部类型分开。

所以使用

Class<?> clz = Class.forName("com.package.FirstClass$EnumGroup");
//                                                  ^