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

时间:2016-02-25 19:34:51

标签: java

我有下面的枚举

serial.DiscardInBuffer

这个工作正常,但我输入像“900”,所以我想得到像 lamborghini 那样的enumConstructorName,我该怎么办呢。

3 个答案:

答案 0 :(得分:5)

Optional<Car> car = Arrays.stream(Car.values())
     .filter(c -> c.getPrice().equals(input))
     .findFirst();

答案 1 :(得分:1)

最有效的方法是拥有一个可以查找的地图。

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。

答案 2 :(得分:0)

这将返回枚举的名称:

Car.lamborghini.name();