Java 当枚举在 class 中时的枚举反射

Java enum reflection when enum is inside a class

我有多个 classes 实例,其中嵌套了一个枚举。这是 class:

的简化版本
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
}

我的目标是以编程方式迭代这些 classes(即 FirstClass、SecondClass 等)并提取枚举(通常称为 "EnumGroup")并调用方法 getName() on枚举的每个值。

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

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

我不一定需要这个设置,但最终目标是在遍历枚举的每个 class 中都没有相同的代码。

由于您正在使用 Class.forName,您需要使用 class 的 name,并且在 class 名称中,内部类型与外部类型分开类型 $.

所以使用

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