【问题标题】:Getting Enum String values from 1 shot [duplicate]从 1 个镜头中获取枚举字符串值 [重复]
【发布时间】:2018-09-14 13:29:55
【问题描述】:

我在我的项目中定义了这个枚举:

public enum MenuAlertEnum {

    DAILY_PLUS          (1, "MENU_DAILY_PLUS"),
    DAILY_MINUS         (2, "MENU_DAILY_MINUS"),
    WEEKLY_PLUS         (3, "MENU_WEEKLY_PLUS"),
    WEEKLY_MINUS        (4, "MENU_WEEKLY_MINUS"),
    FORTNIGHTLY_PLUS    (5, "MENU_FORTNIGHTLY_PLUS"),
    FORTNIGHTLY_MINUS   (6, "MENU_FORTNIGHTLY_MINUS"),
    MONTHLY_PLUS        (7, "MENU_MONTHLY_PLUS"),
    MONTHLY_MINUS       (8, "MENU_MONTHLY_MINUS");

    private final int id;

    private final String alertName;

    private MenuAlertEnum(int id, String alertName) {
        this.id = id;
        this.alertName = alertName;
    }

    public int getId() {
        return id;
    }

    public String getAlertName() {
        return alertName;
    }

}

我必须将它添加到List<String>,我不知道是否可以像这样在 1 个镜头中完成它:

List<String> menuPrice = new ArrayList<String>();
menuPrice.addAll(MenuAlertEnum.values());

【问题讨论】:

    标签: java


    【解决方案1】:

    假设你想得到一个列表[ MENU_DAILY_PLUS, MENU_DAILY_MINUS, ... ]

    List<String> result = Arrays.stream(MenuAlertEnum.values())
          .map(MenuAlertEnum::getAlertName)
          .collect(Collectors.toList());
    

    【讨论】:

      【解决方案2】:

      在 Java 8 中:

      public static String[] getNames(Class<? extends Enum<?>> e) {
          return Arrays.stream(e.getEnumConstants()).map(Enum::name).toArray(String[]::new);
      }
      

      替代方案(Java 8 之前可以使用):

      public static String[] getNames(Class<? extends Enum<?>> e) {
          return Arrays.toString(e.getEnumConstants()).replaceAll("^.|.$", "").split(", ");
      }
      

      【讨论】:

        猜你喜欢
        • 2017-07-03
        • 1970-01-01
        • 1970-01-01
        • 2013-07-18
        • 2012-12-28
        • 2020-07-11
        • 2020-03-09
        • 2017-08-01
        • 2021-04-04
        相关资源
        最近更新 更多