java - 如何获取在另一个枚举中声明的所有嵌套枚举的集合或数组?

标签 java java-8

为了测试支持,我有以下枚举。它是关于 I18n 的。

public enum PersonaFieldI18n {

    NOTHING_TO_DO;

    private PersonaFieldI18n(){

    }

    public enum English {

        ID("Id"),
        NOMBRE("Name"),
        APELLIDO("Last Name"),
        FECHA("Date");

        private String field;

        private English(String field){
            this.field = field;
        }

        public String getField() {
            return field;
        }

    }

    public enum Spanish {

        ID("Id"),
        NOMBRE("Nombre"),
        APELLIDO("Apellido"),
        FECHA("Fecha");

        private String field;

        private Spanish(String field){
            this.field = field;
        }

        public String getField() {
            return field;
        }

    }

    public enum Portuguese {

        ID("Id"),
        NOMBRE("Nome"),
        APELLIDO("Sobrenome"),
        FECHA("Data");

        private String field;

        private Portuguese(String field){
            this.field = field;
        }

        public String getField() {
            return field;
        }

    }
}

如果 PersonaFieldI18n.values() 被执行,它只会返回 NOTHING_TO_DO

获取每个嵌套枚举的集合或数组的方法是什么(如果存在)?

我需要一种方法来调用 PersonaFieldI18n 枚举中定义的方法,它返回以下元素:

  • PersonaFieldI18n.English
  • PersonaFieldI18n.Spanish
  • PersonaFieldI18n.Portuguese

如您所见,上面显示的每个元素都是 PersonaFieldI18n 枚举的嵌套枚举。

这样做可行吗?如何?什么是最佳实现?

最佳答案

正如@Kevin 所说,嵌套枚举实际上是 PersonaFieldI18n 的内部类,因此您可以通过反射 获取它们。

声明如下:

Class<?>[] classes = PersonaFieldI18n.class.getDeclaredClasses();

关于java - 如何获取在另一个枚举中声明的所有嵌套枚举的集合或数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42284465/

相关文章:

java - 范围为 (A..Z, 0..9) 和标点符号的随机字符生成器

java - Grails中用户映射的部分打开错误

java - 通过使用 java 8 流 API 比较 2 个 map 来计算百分比?

Java 8 从列表中删除重复的字符串而不考虑大小写

java - 方面.jcabi : @Loggable doesn't add logs to the output

java - 如何在maven pom.xml中配置依赖项?

java - 多模块项目的 Maven 组装插件入门

java - Android Studio-java.io.FileNotFoundException :(系统找不到指定的文件)并且无法提取JNI库

java - 使用 Java Streams 一次从文本文件中读取 X 行?

bean-validation - bean-validation 的日期约束和 java.time 怎么样?