首先,谢谢你的帮助!!
我想用Enumeration类制作的是餐馆的菜单。菜单组件有自己的id,即number和name。
"001"("Pasta"),
"002"("Pizza"),
"003"("Nuddle"),
"004"("Steak"),
"005"("Rice")
上面的代码我的第一个想法但是,我得到了错误,所以我认为只有String值可以是Enumeration的组件。所以,我改变了下面的代码,但它又产生了错误。
{{1}}
这些数字只是食物的ID,所以它可以有String类型。我该怎么做?
答案 0 :(得分:5)
枚举名称不能以数字开头。如果你想使用Enums,我建议使用这样的东西:
public enum Food {
PASTA("Pasta", 1),
PIZZA("Pizza", 2);
/** state variables */
private String name;
private int id;
/** Constructor */
Food(String name, int id) {
this.name=name;
this.id=id;
}
/** Accessors */
public String getName() {
return name;
}
public int getId() {
return id;
}
}
答案 1 :(得分:1)
你可以这样使用。或者如何添加像... F001, F002
public class Tester {
static enum Food {
PASTA("001"), PIZZA("002"), NOODLE("003");
private String number;
Food(String number){
this.number = number;
}
public String getNumber(){
return this.number;
}
}
public static void main(String[] args) {
System.out.println( Food.PIZZA.getNumber());
}
}
答案 2 :(得分:1)
你可以这样做。首先创建一个静态映射,并将数字和字符串值作为键值对,并在创建构造函数以填充这两个字段后,编写一个实用程序,以根据给定的数字键值检索食物值。
public enum MenuEnum {
ONE(1, "Pasta"), TWO(2, "Pizza"), THREE(3, "Noodle");
private int number;
private String name;
private MenuEnum(int number, String name) {
this.name = name;
this.number = number;
}
public String getName() {
return name;
}
public int getNumber() {
return number;
}
public String getFoodByNumber(int key) {
return foodMap.get(key) != null ? foodMap.get(key) : null;
}
private static final Map<Integer, String> foodMap = new HashMap<Integer, String>();
static {
for (MenuEnum val : MenuEnum.values()) {
foodMap.put(val.getNumber(), val.getName());
}
}