我看到很明显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)
但这看起来很难看......有更好的解决方案吗?
谢谢和问候,丹尼尔
您可以将数组直接传递给方法.如果要初始化数组并将其传递给一行中的方法,则需要:
testFunk(new int[] {1,2,3,4});
Run Code Online (Sandbox Code Playgroud)
而不是这个
testFunk({1,2,3,4});
Run Code Online (Sandbox Code Playgroud)