带有数组属性的java枚举

Dan*_*lBK 0 java arrays enums

我看到很明显java不允许将数组直接传递给方法(以前不知道这个).例如,这不编译:

public static void main(String[] args) {
    testFunk({1,2,3,4});
}

public static void testFunk(int[] a) {}
Run Code Online (Sandbox Code Playgroud)

但这样做:

public static void main(String[] args) {
    int[] a = {1,2,3,4};
    testFunk(a);
}

public static void testFunk(int[] a) {}
Run Code Online (Sandbox Code Playgroud)

但是如果我需要使用接受数组的构造函数创建枚举呢?

例如,我尝试了以下代码,但由于与上述相同的原因,它无法编译:

    public enum FigureType {

    SQUARE({{true, true},{false, false}});

    private boolean[][] matrix;

    private FigureType(boolean[][] matrix) {
        this.matrix = matrix;
    }

}
Run Code Online (Sandbox Code Playgroud)

不幸的是,似乎没有一个简单的解决方法.我想到的唯一选择是构建这样的东西:

    public enum FigureType {

    SQUARE(() -> {boolean[][] array = {{true,true},{false,false}}; return array; });

    private boolean[][] matrix;

    private FigureType(Supplier<boolean[][]> supplier) {
        this.matrix = supplier.get();
    }

}
Run Code Online (Sandbox Code Playgroud)

但这看起来很难看......有更好的解决方案吗?

谢谢和问候,丹尼尔

khe*_*ood 9

可以将数组直接传递给方法.如果要初始化数组并将其传递给一行中的方法,则需要:

testFunk(new int[] {1,2,3,4});
Run Code Online (Sandbox Code Playgroud)

而不是这个

testFunk({1,2,3,4});
Run Code Online (Sandbox Code Playgroud)