将数组作为参数传递给枚举构造函数:语法问题

时间:2015-01-15 17:28:15

标签: java enums

我正在使用枚举创建一个enigma模拟程序。 以下是机器枚举的初稿,所以我还没有任何具体细节。

问题是我的IDE一直说花括号不应该在那里,我试图将数组传递给枚举构造函数。

我的枚举构造函数或枚举常量声明是否有问题?我怎样才能纠正这个问题呢?

public enum MACHINETYPE {
    WehrmachtEnigma (4, {true, true, true, false}),
    KriegsmarineM4(4, {true, true, true, true}),
    Abwehr(4, {true, true, true, true});

    private final int ROTORS_COUNT;
    private final boolean[] STEPPING;

    private MACHINETYPE(int rotors, boolean[] stepping){
        ROTORS_COUNT = rotors;
        STEPPING = stepping;
    }
}

1 个答案:

答案 0 :(得分:1)

您没有正确声明阵列。应使用new boolean[] { ... }声明它们。但是,由于数组是构造函数的参数,因此可以使用varargs表示法缩短声明。这将删除您的错误消息。

enum MACHINETYPE{
    WehrmachtEnigma (4, true, true, true, false),
    KriegsmarineM4(4, true, true, true, true),
    Abwehr(4, true, true, true, true);

    private final int ROTORS_COUNT;
    private final boolean[] STEPPING;

    private MACHINETYPE(int rotors, boolean... stepping){
        ROTORS_COUNT = rotors;
        STEPPING = stepping;
    }
}