Uygun numaralama ve int / arasında göster Dize
Değerler sadece sınırlı sayıda alabileceği parametreler/Değişkenler ile çalışırken, Java gibi enum
, her zaman kullanmaya çalışın
public enum BonusType {
MONTHLY, YEARLY, ONE_OFF
}
Benim kod içinde kaldığım sürece, bu gayet iyi çalışıyor. Ancak, sık sık gerek arayüzü ile diğer kullandığı kod Ovası int
(String
) değerleri için aynı amaç veya ihtiyacım için okuma/yazma için bir veritabanı veriler nerede saklı olarak bir sayı veya dize.
Bu durumda, istediğim şey ... ... uygun bir şekilde ilişkilendirmek, her numaralandırma değeri bir tamsayı, öyle ki ben dönüştürmek her iki yolla da (diğer bir deyişle, bir "tersinir numaralama").
Numaralama için int gidiyor kolaydır:
public enum BonusType {
public final int id;
BonusType(int id) {
this.id = id;
}
MONTHLY(1), YEARLY(2), ONE_OFF(3);
}
O zaman BonusType x = MONTHLY; int id = x.id;
int değer erişebilirsiniz.
Ancak, tersi için iyi bir yol görüyorum, yani numaralama. int gidiyor İdeal olarak, bir şey gibi
BonusType bt = BonusType.getById(2);
Bulabildiğim tek çözüm vardır:
BonusType.values()
bir harita doldurmak için kullandığı numaralama, içine bir arama yöntemi " - ^ int . "o zaman önbelleğe ve aramaları için kullanır. numaralama Aynı şekilde, her numaralandırma içine kullanıyorum ama bu yöntem kopyala lazım olur :-(.- Statik bir Yardımcı Sınıf içine arama yöntemi koymak. O zaman sadece "arama" yöntemi, ama yansıması keyfi bir numaralama için keman gerek. bir ihtiyacım olurdu
Her iki yöntem de böyle bir basit için çok garip görünüyor (?) sorun.
Başka fikri/düşüncesi olan?
CEVAP
seçeneğine int numaralama
yourEnum.ordinal()
seçeneğine numaralama int
EnumType.values()[someInt]
Dize öğelerini numaralandırma
EnumType.valueOf(yourString)
numaralandırma seçeneğine Dize
yourEnum.name()
Bir yan not:ordinal() "" sürüm. Sürüm arasında kararsız olabilir gibi Bu hep benim veritabanlarında dizeleri gibi sabitleri depolamak nedeni de tam olarak budur. MySql kullanırken (aslında,,*! *20) olarak saklıyorum
Nasıl doğru ActionScript 3 SOAP web se...
Java ile bir numaralama için bir Dize ...
JSON dize olarak seri numaralama...
Nasıl bir dize C / birden fazla satır ...
Nasıl özel bir dize ile numaralama bağ...