有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

枚举的Java数组(类)

这样做有多可行?考虑^ {< CD1> } {^ {CD2}}…

public static void main(String[] args) {
  ?[] types = new ?[] { Enum1, Enum2, Enum3 };

  for(? type : types) {
    for(Enum elem : type.values() { /* ... */ }
  }
}

我的主要需求基本上是一组字符串常量,每一个都以不同的类型分组。使用二维字符串数组(String[][])设置是否更好?我想要一些更受约束的值,而不是类型[j],其中j==1A,而j==2B

我知道我可以玩弄反射,但我敢说,它会变得太复杂,然后,可读性就差了


共 (2) 个答案

  1. # 1 楼答案

    也许这种结构可以解决你的问题:

        enum SomeEnum {
            A("one", "two", "three"),
            B("hello", "there");
    
            public final String[] constants;
    
            SomeEnum(String... constants) {
                this.constants = constants;
            }
        }
    
  2. # 2 楼答案

    如果我正确理解了这个问题,你可以创建一个Enum[][]来存储枚举列表。这看起来像这样

    public class Test {
    
        enum Birds {BIG_BIRD, MEDIUM_BIRD, SMALL_BIRD};
        enum Dogs {BIG_DOG, MEDIUM_DOG, SMALL_DOG};
        enum Bugs {BIG_BUG, MEDIUM_BUG, SMALL_BUG};
        Enum[][] enums = {Birds.values(),Dogs.values(),Bugs.values()};
    
    }
    

    然后可以通过嵌套循环运行enums来获取值。比如

        for(Enum[] e : enums){ 
            for(Enum e2 : e){ 
                System.out.println(e2);
            }
        }
    

    这将为您提供输出

    BIG_BIRD
    MEDIUM_BIRD
    SMALL_BIRD   
    BIG_DOG
    MEDIUM_DOG
    SMALL_DOG
    BIG_BUG
    MEDIUM_BUG
    SMALL_BUG
    

    您可以更进一步,声明表示存储类型的数值的常量。例如:

    public static final byte BIRDS = 0;
    public static final byte DOGS = 1;
    public static final byte BUGS = 2;
    

    然后,您可以通过以下方式从数组中访问特定类型:

    for(Enum e: enums[Test.BIRDS]) System.out.println((Birds)e);