2011-11-03 24 views
43

Geri yükleme değeri enum ile dönüştürmek veya eşlemek istiyorum, Android'de Yerel koddan uzun veya int şeklinde döndürme değeri alıyorum. Mümkün mü ? Nasıl?int ile enum için eşleşme

cevap

57

Eğer değerler ve çeteleler tam denetime sahip ve bunlar sıralı iseniz, enum sıra değerini kullanabilirsiniz: Bu ordinal kullanarak çok daha iyi bir yaklaşımdır

enum Heyo 
{ 
    FirstVal, SecondVal 
} 

...later 

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

int againSystemVal = enumVal.ordinal(); 
+5

Bir numara için "değer" elde etmek için ordinal kullanımı önerilmez. Bunun yerine, bunun yerine bir örnek alanı kullanın. Josh Bloch'un Etkin Java'sının 2. baskısında Madde 31'e bakın. –

50

Enum'unuzu uzun veya int dahili olarak oluşturacak şekilde ayarlayabilirsiniz.

örn:

ePasswordType var = ePasswordType.NUMBER; 

int ValueOfEnum = var.getValue(); 

sadece int bildiğinizde enum almak için, kullanım: Bu dosyayı 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; 
    } 
} 

Sonra böyle atanan değerleri erişebilir oluştur Bu:

ePasswordType t = ePasswordType.fromInt(0); 

Java'daki enumlar Her değer kendi sınıfında olabileceği için güçlüdür.

+3

(). Nedenini öğrenmek için, Etkili Java'yı okuyun –

+0

@Kuffs: Aynı zamanda, tamsayının değerini kullanarak enumu ayarlamak için uygun bir yol var mı? – Levit

+0

@Levit Değer, tasarım zamanında çalışma zamanında ayarlanmadı. Yalnızca int'yi biliyorsanız enum değerini almak istediğinizde, benim düzenlenmiş cevabımı görün. – Kuffs