Je reçois une valeur de retour sous forme de long ou int de code natif dans Android, que je souhaite convertir ou faire correspondre avec enum, à des fins de traitement. C'est possible ? Comment?
Si vous avez le contrôle total des valeurs et des énumérations, et qu'elles sont séquentielles, vous pouvez utiliser la valeur ordinale de l'énumération:
enum Heyo
{
FirstVal, SecondVal
}
...later
int systemVal = [whatever];
Heyo enumVal = Heyo.values()[systemVal];
int againSystemVal = enumVal.ordinal();
Vous pouvez configurer votre énumération de manière à ce qu'elle intègre le long ou l'int.
par exemple: créer ce fichier 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;
}
}
Vous pouvez ensuite accéder aux valeurs affectées comme ceci:
ePasswordType var = ePasswordType.NUMBER;
int ValueOfEnum = var.getValue();
Pour obtenir l'énumération lorsque vous ne connaissez que l'int, utilisez ceci:
ePasswordType t = ePasswordType.fromInt(0);
Les énumérations dans Java sont très puissantes car chaque valeur peut être sa propre classe.