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



我正在创建一个谜模拟程序,用于枚举的一些练习。以下是机器枚举的初稿,所以我还没有任何细节。

问题是我的 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;
    }
}

您没有正确声明数组。它们应使用 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;
    }
}

最新更新