Java 如何按名称字符串获取枚举值

Java 如何按名称字符串获取枚举值,java,enums,Java,Enums,我想按名称字符串获取枚举值 这是枚举代码: 包装实践 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");

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

这是枚举代码: 包装实践

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获得Samsung value 400?
非常感谢

您可以使用以下内容:

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

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

您可以使用以下方法:

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

您必须将方法showPrice的作用域更改为public。

您可能知道,每个枚举中都有一个valueOf方法,当字符串无效时,该方法仅通过解析名称read about exceptions返回常量

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

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

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


如您所知,每个枚举中都有一个valueOf方法,当字符串无效时,它仅通过解析nameread about exceptions返回常量

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

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

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


你是说像Enum.valueOfString?e、 g Mobile.valueOfNokiaUnrelated:标准命名约定是将该方法命名为getPrice,而不是showPrice,特别是因为该方法实际上不显示任何内容。@Edwin是的,Enum,valueOfenumClass,name,我们可以通过此类型方法获得名称对应的值400吗?您的意思是类似于Enum.valueOfString吗?e、 g Mobile.valueOfNokiaUnrelated:标准命名约定是将该方法命名为getPrice,而不是showPrice,特别是因为该方法实际上不显示任何内容。@Edwin yes,Enum,valueOfenumClass,name,我们可以通过此类型方法获得名称对应的值400吗?为什么是最终关键字?不是必需的,并且会向示例中添加零值。@Gabe使用变量enumClass怎么样?不是移动的。为什么最后的关键词?不是必需的,并且会向示例中添加零值。@Gabe使用变量enumClass怎么样?不是移动的。
System.out.println(ProgramOfStudy.getByShortCut("CS"));