[英]Constructor Enum error
public enum ProductCategory {
FOOD, BEVERAGE, DEFAULT;
private final String label;
private ProductCategory(String label){
this.label = label;
}
public String getLabel(){
return label;
}
我想在此枚举类中实现方法getLabel(),但我却遇到错误:“构造函数ProductCategory()未定义”。
我已经有了所需的构造函数,还需要编写什么? 我尝试编写默认构造函数,但再次出现错误。
PS我是java的初学者。
错误来自enum
成员的声明:由于构造函数采用String label
,因此您需要提供字符串以传递给该构造函数:
FOOD("food"), BEVERAGE("bev"), DEFAULT("[default]");
您当前拥有的唯一构造函数要求传入一个字符串-但所有枚举值( FOOD
, BEVERAGE
, DEFAULT
) 均未指定字符串,因此它们无法调用该构造函数。
两种选择:
添加一个无参数的构造函数:
private ProductCategory() {}
但是,这不会将标签与您的枚举值相关联。
在每个值上指定标签:
FOOD("Food"), BEVERAGE("Beverage"), DEFAULT("Default");
后者几乎可以肯定是您想要的。
可以在声明Enum成员本身时调用Enum构造函数。
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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.