Java Enum构造函数未定义

时间:2014-07-28 07:46:25

标签: java eclipse enums

为什么我收到错误"构造函数未定义"它是在我的eclipse IDE中吗? 我的代码有问题吗?

public enum EnumHSClass {
    PALADIN ("Paladin"),ROUGE("ROUGE");
}

5 个答案:

答案 0 :(得分:12)

如果您希望枚举具有参数,则需要为这些参数声明构造函数和字段。

public enum EnumHSClass {
    PALADIN ("Paladin"),ROUGE("ROUGE");
    private final String name;
    private EnumHSClass(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

答案 1 :(得分:4)

您需要在枚举中提供constructor,如:

public enum EnumHSClass {

    PALADIN("Paladin"), ROUGE("ROUGE");

    String value;

    EnumHSClass(String value) {
        this.value = value;
    }
}
  

注意:枚举类型的构造函数必须是package-private或   私人访问。它会自动创建常量   在枚举体的开头定义。你不能调用枚举   构建者自己。

参考:http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

答案 2 :(得分:2)

枚举也有构造函数,但只有私有或默认可见性:

public enum EnumHSClass {
    PALADIN ("Paladin"),ROUGE("ROUGE");
    private EnumHSClass(String s) {
        // do something with s
    }
}

您可能需要声明一个字段并为其创建一个getter,并在构造函数中设置该字段。

另请注意,enum实例的名称可通过所有枚举所具有的(隐式)name()方法免费获得 - 也许您可以使用它。

答案 3 :(得分:1)

您的代码应如下所示:

public enum EnumHSClass {

    PALADIN ("Paladin"), ROUGE("ROUGE");

    private String name;

    private  EnumHSClass(String name) {
        this.name = name;
    } 
}

答案 4 :(得分:1)

public enum Days {
    MONDAY(1), TUESDAY(2);
    int val;
    Days (int val) {
        this.val = val;
    }
}