21xrx.com
2025-03-25 15:22:54 Tuesday
文章检索 我的文章 写文章
如何在Java枚举类中根据key获取value
2023-06-15 09:11:01 深夜i     10     0
Java枚举类 根据key获取value switch-case语句 Map集合

在Java中,枚举类型是一种特殊的类。它由一组固定的常量值组成,并且这些常量值是不能被修改的。在实际的开发过程中,我们经常需要根据key获取value,用于展示或保存数据等。本文将介绍如何在Java枚举类中根据key获取对应的value。

首先,我们需要在枚举类中定义一个方法,用于返回指定key对应的value。方法的实现可以采用switch-case语句或者Map集合。如果我们只需要在枚举类中根据key获取value,可以采用switch-case语句,如下:

public enum Weekday {
  MONDAY("星期一"),
  TUESDAY("星期二"),
  WEDNESDAY("星期三"),
  THURSDAY("星期四"),
  FRIDAY("星期五"),
  SATURDAY("星期六"),
  SUNDAY("星期日");
  private String description;
  Weekday(String description)
    this.description = description;
  
  public String getDescription()
    return description;
  
  public static String getValue(String key) {
    for (Weekday weekday : values()) {
      if (weekday.name().equals(key)) {
        return weekday.getDescription();
      }
    }
    return null;
  }
}

在上面的代码中,我们定义了一个名为getValue的静态方法,它接收一个字符串类型的key值,并返回对应的value。我们使用for-each循环来遍历枚举类中的所有常量值,通过name()方法获取常量名称,并与指定的key进行比较,如果相等,则返回该常量对应的description值。

如果我们需要在多个枚举类中都使用该方法来获取value,可以使用Map集合来实现。首先,我们需要在每个枚举类中定义一个名为valueMap的属性,它的类型为Map。


public enum Status {

  SUCCESS(200, "成功"),

  ERROR(500, "错误");

  private int code;

  private String description;

  Status(int code, String description)

    this.code = code;

    this.description = description;

  

  public int getCode()

    return code;

  

  public String getDescription()

    return description;

  

  private static Map valueMap = new HashMap<>();

  static {

    for (Status status : values()) {

      valueMap.put(status.getCode(), status.getDescription());

    }

  }

  public static String getValue(int key) {

    return valueMap.get(key);

  }

}

在上面的代码中,我们定义了一个名为valueMap的静态属性,并使用静态代码块来初始化该属性。静态代码块在类加载时会被执行,这样我们就可以遍历该枚举类中的所有常量值,将它们的code和description存入valueMap中。在getValue方法中,我们直接使用valueMap.get(key)来获取对应的value值。

总之,在Java枚举类中根据key获取value有多种实现方式。如果只需要在单个枚举类中获取value,可以采用switch-case语句;如果在多个枚举类中都需要使用该方法,可以使用Map集合来实现。

  
  

评论区