将Java枚举映射到整数

4

我希望在Java中将整数映射到枚举值。这里,整数需要作为键(key),而枚举值是值(value)。所有我看到的示例都是将枚举作为值(value)而整数作为键(key)。我的代码如下:

enum CardStatus {
    UNKNOWN, // 0 should map to this
    PENDING, // 1 should map to this
    ACTIVE // 2 should map to this

    public CardStatus getCardStatus(int cardStatus) {
        // e.g. cardStatus of 1 would return PENDING
    }
}

我怎样才能调用 getCardStatus() 函数并返回一个 CardStatus 枚举值呢?例如,getCardStatus(2) 将返回 ACTIVE


8
return CardStatus.values()[cardStatus]; - Ole V.V.
我之前做了一个例子,可能会对你有所帮助:https://stackoverflow.com/questions/54986379/call-parametrised-constructor-in-enum-singleton/54986549#54986549 - Level_Up
use ordinal values - jarvo69
2
我知道它能够工作,但我不同意使用values()的解决方案。在我看来,这种方法过于脆弱,因为它依赖于值的顺序。如果需要一个新的值,比如关联键为-1的CANCELED,那该怎么办? - Andrew S
1
@AndrewS 同意,但现在先使用这个。 - Mark
1个回答

4

您可以将getCardStatus()设置为静态的:

enum CardStatus {
    UNKNOWN, // 0 should map to this
    PENDING, // 1 should map to this
    ACTIVE; // 2 should map to this

    public static CardStatus getCardStatus(int cardStatus) {
        return CardStatus.values()[cardStatus];
    }
}

并使用它:

System.out.println(CardStatus.getCardStatus(0));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接