有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何通过名称字符串获取枚举值

我想按名称字符串获取枚举值

这是枚举代码: 包装实践

enum Mobile {
  Samsung(400),
  Nokia(250),
  Motorola(325);

  int price;
  Mobile(int p) {
    price = p;
  }
  int showPrice() {
    return price;
  }
}

我可以得到类名和名称字符串

Class enumClass = Class.forName("practice.Mobile");
String name = "Samsung";

如何仅使用enumClass和name获得三星value 400? 非常感谢


共 (2) 个答案

  1. # 1 楼答案

    您可以使用以下内容:

    final Mobile mobile = Mobile.valueOf("Samsung");
    final int price = mobile.showPrice();
    

    (您必须将方法showPrice()的范围更改为public

  2. # 2 楼答案

    您可能知道,每个枚举中都有一个valueOf方法,它只需解析名称即可返回常量(请阅读有关字符串无效时的异常的信息)

    现在,由于您的枚举有另一个与常量关联的字段,您需要通过匹配这些字段来搜索其值

    这是一个可能的解决方案,使用

    爪哇8

    public enum ProgramOfStudy {
        ComputerScience("CS"), 
        AutomotiveComputerScience("ACS"), 
        BusinessInformatics("BI");
    
        public final String shortCut;
    
        ProgramOfStudy(String shortCut) {
            this.shortCut = shortCut;
        }
    
        public static ProgramOfStudy getByShortCut(String shortCut) {
    
            return Arrays.stream(ProgramOfStudy.values()).filter(v -> v.shortCut.equals(shortCut)).findAny().orElse(null);
        }
    }
    

    因此,您可以通过搜索枚举的“快捷方式”来“解析”枚举

    就像

    System.out.println(ProgramOfStudy.getByShortCut("CS"));