我的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.Voucher.getValue();
。
我怎么能以相反的方式做到这一点?我有一个数据库的整数值,我需要找到与。
对应的字符串答案 0 :(得分:6)
你应该做这样的事情(static-init块应该在最后!在你的情况下只需用数字替换“asc”和“desc”,或者添加任何其他字段):
public enum SortOrder {
ASC("asc"),
DESC("desc");
private static final HashMap<String, SortOrder> MAP = new HashMap<String, SortOrder>();
private String value;
private SortOrder(String value) {
this.value = value;
}
public String getValue() {
return this.value;
}
public static SortOrder getByName(String name) {
return MAP.get(name);
}
static {
for (SortOrder field : SortOrder.values()) {
MAP.put(field.getValue(), field);
}
}
}
之后,请致电:
SortOrder asc = SortOrder.getByName("asc");
答案 1 :(得分:0)
从ordinal()
索引值返回到枚举:
type = PaymentType.values()[index];
但是,请记住,当序数存储在其他任何位置(例如数据库)时,这很脆弱。如果索引号发生变化,您将得到无效结果。
要获得更可靠的查找表,请使用Map。