繁体   English   中英

如何从Java中的值获取枚举构造函数名称?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM