Mik*_*ter 5 java enums android
我的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;
}
}
Run Code Online (Sandbox Code Playgroud)
例如,我使用这个枚举很多来找出其中一个字符串标签的整数值int i = Lookups.PaymentType.Voucher.getValue();
.
我怎么能这样做呢?我有一个数据库的整数值,我需要找到对应的字符串.
小智 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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
之后,只需致电:
SortOrder asc = SortOrder.getByName("asc");
Run Code Online (Sandbox Code Playgroud)
要从ordinal()
索引值返回到枚举:
type = PaymentType.values()[index];
Run Code Online (Sandbox Code Playgroud)
但是,请记住,当序数存储在其他地方(例如数据库)时,这是脆弱的。如果索引号发生变化,您将得到无效结果。
要获得更可靠的查找表,请使用 Map。