我发现显然java不允许将数组直接传递给方法(之前不知道这一点)。例如,这不会编译:
public static void main(String[] args) {
testFunk({1,2,3,4});
}
public static void testFunk(int[] a) {}
但这确实:
public static void main(String[] args) {
int[] a = {1,2,3,4};
testFunk(a);
}
public static void testFunk(int[] a) {}
但是如果我需要使用接受数组的构造函数创建一个枚举怎么办?
例如,我尝试了以下代码,但由于与上面相同的原因,它无法编译:
public enum FigureType {
SQUARE({{true, true},{false, false}});
private boolean[][] matrix;
private FigureType(boolean[][] matrix) {
this.matrix = matrix;
}
}
不幸的是,这里似乎没有简单的解决方法。我想到的唯一选择是构建这样的东西:
public enum FigureType {
SQUARE(() -> {boolean[][] array = {{true,true},{false,false}}; return array; });
private boolean[][] matrix;
private FigureType(Supplier<boolean[][]> supplier) {
this.matrix = supplier.get();
}
}
但这看起来很丑......有更好的解决方案吗?
谢谢和问候, 丹尼尔
最佳答案
您可以将数组直接传递给方法。如果你想初始化一个数组并将其传递给一行中的方法,你需要这样:
testFunk(new int[] {1,2,3,4});
而不是这个
testFunk({1,2,3,4});
关于java 枚举与数组属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47816012/