如何通过int或字符串访问枚举

时间:2014-03-14 23:06:45

标签: java enums

我有以下枚举:

public enum Difficulty {
    EASY(2), MEDUIM(3), HARD(5), EXTREME(8);

    private int length;

    Difficulty(int length) {
        this.length = length;
    }

    public int length() {
        return length;
    }
}

我希望能够到达正确的枚举实例,无论我知道号码还是名称。 例如,如果我有int 3,我需要一个能够返回MEDIUM的简单函数。如果我有字符串extreme,我需要一个能够返回8的简单函数。 简单来说,我的意思是我不想每次迭代或在枚举中保留一个静态数组。

答案必须是Java,请。谢谢。  我需要对Difficulty枚举结构进行哪些编辑?

1 个答案:

答案 0 :(得分:1)

public static Difficulty getByName(String name) {
    return valueOf(name.toUpperCase());
}

public static Difficulty getByLength(int length) {
    switch (length) {
        case 2:
            return EASY;
        case 3:
            return MEDIUM;
        case 5:
            return HARD;
        case 8:
            return EXTREME;
        default:
            throw new IllegalArgumentException("invalid length : " + length);
    }
}