【问题标题】:Passing array as argument to enum constructor: syntax issues [duplicate]将数组作为参数传递给枚举构造函数:语法问题
【发布时间】:2015-03-14 04:44:11
【问题描述】:

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

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

【问题讨论】:

  • 我意识到,在我回答了这个问题之后,我已经回答了它之前。对此感到抱歉。
  • 这个问题不仅仅是关于数组初始化,而是关于将数组作为参数传递。它看起来不像 Array initialisation in java 的真正副本

标签: java enums


【解决方案1】:

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

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;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 2012-10-29
    • 2014-07-14
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    相关资源
    最近更新 更多