构造函数枚举错误


public enum ProductCategory {
  FOOD, BEVERAGE, DEFAULT;
private final String label;
private ProductCategory(String label){
this.label = label;
}
public String getLabel(){
        return label;
}

我想在这个枚举类中实现方法getLabel((,但是我收到错误:"构造函数ProductCategory((未定义"。

我已经有我需要的构造函数,我还需要写什么?我尝试编写默认构造函数,但再次出现错误。

附言我是Java的初学者。

错误来自enum成员的声明: 由于构造函数采用String label,您需要提供要传递给该构造函数的字符串:

FOOD("food"), BEVERAGE("bev"), DEFAULT("[default]");

您当前获得的唯一构造函数需要传入一个字符串 - 但所有枚举值(FOODBEVERAGEDEFAULT(都不指定字符串,因此它们不能调用构造函数。

两个选项:

  • 添加无参数构造函数:

    private ProductCategory() {}
    

    不过,这不会将标签与您的枚举值相关联。

  • 指定每个值的标签:

    FOOD("Food"), BEVERAGE("Beverage"), DEFAULT("Default");
    

后者几乎肯定是你想要的。

可以在

声明枚举成员本身时调用枚举构造函数。

public enum ProductCategory
    {
        FOOD("label1"),
        BEVERAGE("label2"),
        DEFAULT("label3");
        private final String label;
        ProductCategory(String label)
        {
            this.label = label;
        }
        public String getLabel()
        {
            return label;
        }
    }
public enum ProductCategory {
    FOOD("FOOD"), BEVERAGE("BEVERAGE"), DEFAULT("DEFAULT");
    private final String label;
    private ProductCategory(String label) {
        this.label = label;
    }
    public String getLabel() {
        return label;
    }
}

最新更新