enum与int、String之间的转换

x33g5p2x  于2021-12-29 转载在 其他  
字(1.4k)|赞(0)|评价(0)|浏览(443)

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方法。

import java.util.HashMap;
import java.util.Map;

/** * * @author admin */
public enum Blah {
  A("text1"),
  B("text2"),
  C("text3"),
  D("text4");
  
  private String text;
  
  Blah(String text) {
    this.text = text;
  }
  
  public String getText() {
    return this.text;
  }
  
  // Implementing a fromString method on an enum type
  private static final Map<String, Blah> stringToEnum = new HashMap<String, Blah>();
  static {
    // Initialize map from constant name to enum constant
    for(Blah blah : values()) {
      stringToEnum.put(blah.toString(), blah);
    }
  }
  
  // Returns Blah for string, or null if string is invalid
  public static Blah fromString(String symbol) {
    return stringToEnum.get(symbol);
  }

  @Override
  public String toString() {
    return text;
  }
}

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

import java.util.HashMap;
import java.util.Map;

/** * * @author admin */
public enum Blah {
  A,
  B,
  C,
  D;

  // Implementing a fromString method on an enum type
  private static final Map<String, Blah> stringToEnum = new HashMap<String, Blah>();
  static {
    // Initialize map from constant name to enum constant
    for(Blah blah : values()) {
      stringToEnum.put(blah.toString(), blah);
    }
  }
  
  // Returns Blah for string, or null if string is invalid
  public static Blah fromString(String symbol) {
    return stringToEnum.get(symbol);
  }
}

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

相关文章