5

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();

これを逆にするにはどうすればよいですか?データベースから整数値があり、対応する文字列を見つける必要があります。

4

2 に答える 2

7

次のようにする必要があります (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");
于 2013-09-19T10:38:25.157 に答える