java 枚举与数组属性

标签 java arrays enums

我发现显然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/

相关文章:

Java重绘()/更新()

c - C中的频率分析,如何获取数组中的整个ascii表?

javascript - 检查行是否已被解析并插入到 mysql 数据库中

C++ 写入 myArray[0] 并设置 myInt = myFloat,为什么这样工作?

c - 枚举值疑惑?

java - 在 JTable 中鼠标悬停时创建信息面板?工具提示可能不够

java - 如何从 java 计算 html 表中的行数

java - 一个 Action 的多个 Java 消费者

java - 将 ENUM 的值相加

c - 在 C 中指定枚举类型的大小