enum与int、String之间的转换

Love The Way You Lie 2023-10-01 11:04 50阅读 0赞

enum与int、String之间的转换

enum<->int

enum -> int: int i = enumType.value.ordinal();
int -> enum: enumType b= enumType.values()[i];

enum<->String

enum -> String: enumType.name()
String -> enum: enumType.valueOf(name);


下面是Enum和字符串类型转化的例子。

第一个例子:字符串和枚举值不相同,注意覆盖toString方法。

  1. import java.util.HashMap;
  2. import java.util.Map;
  3. /**
  4. *
  5. * @author admin
  6. */
  7. public enum Blah {
  8. A("text1"),
  9. B("text2"),
  10. C("text3"),
  11. D("text4");
  12. private String text;
  13. Blah(String text) {
  14. this.text = text;
  15. }
  16. public String getText() {
  17. return this.text;
  18. }
  19. // Implementing a fromString method on an enum type
  20. private static final Map<String, Blah> stringToEnum = new HashMap<String, Blah>();
  21. static {
  22. // Initialize map from constant name to enum constant
  23. for(Blah blah : values()) {
  24. stringToEnum.put(blah.toString(), blah);
  25. }
  26. }
  27. // Returns Blah for string, or null if string is invalid
  28. public static Blah fromString(String symbol) {
  29. return stringToEnum.get(symbol);
  30. }
  31. @Override
  32. public String toString() {
  33. return text;
  34. }
  35. }

第2个例子,字符串和枚举值相同,这个更为简单。

  1. import java.util.HashMap;
  2. import java.util.Map;
  3. /**
  4. *
  5. * @author admin
  6. */
  7. public enum Blah {
  8. A,
  9. B,
  10. C,
  11. D;
  12. // Implementing a fromString method on an enum type
  13. private static final Map<String, Blah> stringToEnum = new HashMap<String, Blah>();
  14. static {
  15. // Initialize map from constant name to enum constant
  16. for(Blah blah : values()) {
  17. stringToEnum.put(blah.toString(), blah);
  18. }
  19. }
  20. // Returns Blah for string, or null if string is invalid
  21. public static Blah fromString(String symbol) {
  22. return stringToEnum.get(symbol);
  23. }
  24. }

至于整形和Enum之间的转换,也可类似处理。

发表评论

表情:
评论列表 (有 0 条评论,50人围观)

还没有评论,来说两句吧...

相关阅读