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

我想通过名称字符串获取枚举值,

这个enum代码:包实践;

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"; 

如何才能获得三星值400仅使用enumClass和名称? 非常感谢

您可以使用以下内容:

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

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

您可能知道,每个枚举中都有一个valueOf方法,它只通过解析名称来返回常量(当字符串无效时读取exception。)

现在,因为你的枚举有另一个与常量相关的字段,你需要通过匹配这些字段来搜索它的值…

这是一个可能的解决方案

java 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"));