web-dev-qa-db-ja.com

intをenumに一致させる方法

Androidのネイティブコードからlongまたはintの形式で戻り値を受け取っています。これを処理するために、enumと変換または照合する必要があります。出来ますか ?どうやって?

48
Sachchidanand

値と列挙型を完全に制御でき、それらが連続している場合、列挙型の序数値を使用できます。

enum Heyo
{
  FirstVal, SecondVal
}

...later

int systemVal = [whatever];
Heyo enumVal = Heyo.values()[systemVal];

int againSystemVal = enumVal.ordinal();
62
Kevin Galligan

列挙型をセットアップして、それにlongまたはintを組み込むことができます。

例:このファイルを作成しますePasswordType.Java

public enum ePasswordType {

    TEXT(0),
    NUMBER(1);

    private int _value;

    ePasswordType(int Value) {
        this._value = Value;
    }

    public int getValue() {
            return _value;
    }

    public static ePasswordType fromInt(int i) {
        for (ePasswordType b : ePasswordType .values()) {
            if (b.getValue() == i) { return b; }
        }
        return null;
    }
}

その後、次のように割り当てられた値にアクセスできます。

ePasswordType var = ePasswordType.NUMBER;

int ValueOfEnum = var.getValue();

Intのみを知っているときに列挙型を取得するには、これを使用します。

ePasswordType t = ePasswordType.fromInt(0);

Javaの列挙は、各値が独自のクラスになり得るため非常に強力です。

60
Kuffs