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]");
您当前获得的唯一构造函数需要传入一个字符串 - 但所有枚举值(FOOD
、BEVERAGE
、DEFAULT
(都不指定字符串,因此它们不能调用构造函数。
两个选项:
-
添加无参数构造函数:
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;
}
}