[英]How to get enum constructor name from value in java?
我有下面的枚举
enum Car {
lamborghini("900"),tata("2"),audi("50"),fiat("15"),honda("12");
private String price;
Car(String p) {
price = p;
}
String getPrice() {
return price;
}
}
public class Main {
public static void main(String args[]){
System.out.println("All car prices:");
System.out.println(Car.valueOf("lamborghini").getPrice());
for (Car c : Car.values())
System.out.println(c + " costs "
+ c.getPrice() + " thousand dollars.");
}
}
这工作正常,但是我有Input像“ 900” ,所以我想获得像lamborghini这样的enumConstructorName,我该怎么做。
Optional<Car> car = Arrays.stream(Car.values())
.filter(c -> c.getPrice().equals(input))
.findFirst();
最有效的方法是拥有一个可以查找的地图。
static final Map<String, Car> priceMap = values().stream()
.collect(Collectors.toMap(c -> c.getPrice(), c -> c));
public static Car lookupPrice(String s) {
return priceMap.get(s);
}
但是,我会将数字存储在int或double之类的字段中。
这将返回Enum的名称:
Car.lamborghini.name();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.