Java 按值查找枚举标签

Java 按值查找枚举标签,java,android,enums,Java,Android,Enums,我的java android应用程序中有以下枚举: static enum PaymentType { Scheme(0), Topup(1), Normal(2), Free(3), Promotion(4), Discount(5), Partial(6), Refund(7), NoShow(8), Prepay(9), Customer(10), Return(11), Change(12), PettyCash(13), StateTax(

我的java android应用程序中有以下枚举:

static enum PaymentType
{           
    Scheme(0), Topup(1), Normal(2), Free(3), Promotion(4), Discount(5), Partial(6),
    Refund(7), NoShow(8), Prepay(9), Customer(10), Return(11), Change(12), PettyCash(13),
    StateTax(14), LocalTax(15), Voucher(16), Membership(17), Gratuity(18), Overpayment(19),
    PrepayTime(20), HandlingFee(21);

    private int value;

    private PaymentType(int i) {
        value = i;
    }
    public int getValue() {
        return value;
    }
}
我经常使用这个枚举来找出其中一个字符串标签的整数值,例如
int I=Lookups.PaymentType.concreate.getValue()


我怎么能反过来做呢?我有一个数据库中的整数值,我需要找到对应的字符串。

您应该这样做(静态init块应该在末尾!在您的情况下,只需将“asc”和“desc”替换为数字,或添加任何其他字段):


要从
ordinal()
索引值返回枚举,请执行以下操作:

type = PaymentType.values()[index];
但是,请记住,当序号存储在其他任何地方(如数据库)时,这是脆弱的。如果索引编号发生变化,您将得到无效的结果


要获得更可靠的查找表,请使用映射。

我不知道
enum
是否是查找表的正确用法。封装不可修改映射的普通类就足够了。谢谢Mike,我会记住:)你能解释一下应用程序中
value
的用法吗?我不会依赖
enum
中元素的顺序。这与使用
ordinal()
的问题是一样的。但是这个答案最好地回答了问题
我怎样才能反过来做呢?
-我会听取大家的建议,谢谢:)静态块不必在最后。就我个人而言,我想把它放在它初始化的
映射旁边;
映射是可变的。我建议改用番石榴
ImmutableMap
SortOrder asc = SortOrder.getByName("asc");
type = PaymentType.values()[index];