Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 构造函数枚举错误_Java_Constructor_Enums - Fatal编程技术网

Java 构造函数枚举错误

Java 构造函数枚举错误,java,constructor,enums,Java,Constructor,Enums,我想在这个枚举类中实现方法getLabel(),但我遇到了一个错误:“构造函数ProductCategory()未定义” 我已经有了我需要的构造函数,我还需要写什么?我试图编写默认构造函数,但再次出现错误 另外,我完全是java初学者。错误来自enum成员的声明:由于构造函数使用字符串标签,因此需要提供字符串以传递给该构造函数: public enum ProductCategory { FOOD, BEVERAGE, DEFAULT; private final String label

我想在这个枚举类中实现方法getLabel(),但我遇到了一个错误:“构造函数ProductCategory()未定义”

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


另外,我完全是java初学者。

错误来自
enum
成员的声明:由于构造函数使用
字符串标签
,因此需要提供字符串以传递给该构造函数:

public enum ProductCategory {
  FOOD, BEVERAGE, DEFAULT;

private final String label;

private ProductCategory(String label){
this.label = label;
}

public String getLabel(){
        return label;
}
FOOD("food"), BEVERAGE("bev"), DEFAULT("[default]");

错误来自于
enum
成员的声明:由于构造函数使用
字符串标签
,因此需要提供要传递给该构造函数的字符串:

public enum ProductCategory {
  FOOD, BEVERAGE, DEFAULT;

private final String label;

private ProductCategory(String label){
this.label = label;
}

public String getLabel(){
        return label;
}
FOOD("food"), BEVERAGE("bev"), DEFAULT("[default]");
您当前拥有的唯一构造函数需要传入字符串-但所有枚举值(
食品
饮料
默认值
)都没有指定字符串,因此无法调用构造函数

两种选择:

  • 添加无参数构造函数:

    public enum ProductCategory {
      FOOD, BEVERAGE, DEFAULT;
    
    private final String label;
    
    private ProductCategory(String label){
    this.label = label;
    }
    
    public String getLabel(){
            return label;
    }
    
    FOOD("food"), BEVERAGE("bev"), DEFAULT("[default]");
    
    但这不会将标签与枚举值相关联

  • 在每个值上指定标签:

    private ProductCategory() {}
    
后者几乎可以肯定是您想要的。

您当前拥有的唯一构造函数需要传入一个字符串-但所有枚举值(
食品
饮料
默认
)都没有指定字符串,因此它们无法调用构造函数

两种选择:

  • 添加无参数构造函数:

    public enum ProductCategory {
      FOOD, BEVERAGE, DEFAULT;
    
    private final String label;
    
    private ProductCategory(String label){
    this.label = label;
    }
    
    public String getLabel(){
            return label;
    }
    
    FOOD("food"), BEVERAGE("bev"), DEFAULT("[default]");
    
    但这不会将标签与枚举值相关联

  • 在每个值上指定标签:

    private ProductCategory() {}
    

后者几乎可以肯定是您想要的。

在声明枚举成员本身时,可以调用枚举构造函数

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

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

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

请注意,将枚举构造函数指定为
private
是多余的。可能重复的枚举构造函数不能写入默认构造函数。默认构造函数是编译器为未编写构造函数的类提供的构造函数。请注意,将枚举构造函数指定为
private
是多余的。可能重复的构造函数不能编写默认构造函数。默认构造函数是编译器为未编写构造函数的类提供的构造函数。