如何使用数字形状的String创建枚举类

时间:2016-02-18 14:02:20

标签: java enums

首先,谢谢你的帮助!!

我想用Enumeration类制作的是餐馆的菜单。菜单组件有自己的id,即number和name。

"001"("Pasta"),
"002"("Pizza"),
"003"("Nuddle"),
"004"("Steak"),
"005"("Rice")

上面的代码我的第一个想法但是,我得到了错误,所以我认为只有String值可以是Enumeration的组件。所以,我改变了下面的代码,但它又产生了错误。

{{1}}

这些数字只是食物的ID,所以它可以有String类型。我该怎么做?

3 个答案:

答案 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());

        }

    }