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

Sou*_*nya 2 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.");
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我输入像"900",所以我想得到像lamborghini那样的enumConstructorName ,我该怎么做呢.

and*_*ucz 5

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

  • 优秀使用Java 8 Streams和过滤功能@andrucz!@resueman在问题的评论中是正确的.您必须遍历所有元素并进行比较.Java 8流使这变得更容易. (2认同)