java - 在 Enum 中使用 switch

标签 java

如果我在 getByIntValue() 中使用 switch 会怎样?真的有必要使用 SparseArray 吗?

public enum Gender {
    Unknown(0),
    Male(1),
    Female(2);

    private static final SparseArray<Gender> lookupTable = new SparseArray<Gender>();
    static {
        for (final Gender gender : EnumSet.allOf(Gender.class)) {
            lookupTable.put(gender.intValue, gender);
        }
    }

    private final int intValue;

    public static Gender getByIntValue(int val) {
        return lookupTable.get(val);
    }

    private Gender(int intValue) {
        this.intValue = intValue;
    }

    public int getIntValue() {
        return intValue;
    }
}

最佳答案

由于您的 int 值从 0 到 2,没有漏洞,您确实可以简单地使用数组。开关也可以,尽管它可能比数组查找稍微慢一些。但除非您调用该方法数十亿次,否则不会产生任何明显的差异。使用您认为最清晰、最容易理解和维护的内容。

关于java - 在 Enum 中使用 switch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14519207/

相关文章:

java - 解密断言的 Opensaml 断言签名验证失败

java - 具有特定格式和两位小数的 double

java - 字符串 1 中的最小窗口包含字符串 2 中的所有字符但不包含字符串 3 中的字符

java - MongoCleaner 线程数变得非常高

java - 为 boolean 值设置 Jtable/Column Renderer

java - 派生类属性的空输出

java - 如何使用 .p8 文件签署 json 网络 token

java - 基于使用java的递归

java - Jmeter 中的 XML 路径断言

java - 长时间运行的处理程序、计时器和任务有问题吗?