我想通过名称字符串
获取枚举值这个枚举代码: 包装实践;
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和名称? 非常感谢
答案 0 :(得分:5)
您可以使用以下内容:
final Mobile mobile = Mobile.valueOf("Samsung");
final int price = mobile.showPrice();
(您必须将方法showPrice()
的范围更改为public
)。
答案 1 :(得分:2)
你可能知道,每个枚举中都有一个valueOf方法,它只是通过解析名称来返回常量(当字符串无效时读取异常。)
现在,由于你的枚举有另外一个与常量相关的字段,你需要通过匹配这些字段来搜索它的值......
这是使用
的可能解决方案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"));