$ var的Java等价物是什么?

时间:2013-01-05 02:04:39

标签: java enums

我是Java新手并且有一个新手问题。我试图随机检索枚举值,如下所示。

public enum ParkedCar {
     car1(....),
     car2(....);
......
}

Random rand = new Random();
int i = 1 + rand.nextInt(5);
String s = "car" + i;
ParkedCar car = ParkedCar.$s;

但是,与在Perl中我们可以使用$ s插入s的值不同,$ s在Java中无效。如果存在Java,那等价的是什么?

谢谢!

3 个答案:

答案 0 :(得分:4)

您想要Enum.valueOf(String s)

String s = "car" + i;
ParkedCar car = ParkedCar.valueOf(s);

这会按名称查找枚举实例。

请注意,如果找不到匹配的实例,此方法将抛出IllegalArgumentException

答案 1 :(得分:0)

Java与Perl非常不同。

您无法使用字符串构建变量名称,然后引用它。

你实际上可以用反射做,但这会使感觉

您可以获得这样的随机枚举值:

Random rand = new Random();
ParkedCar[] carArray = ParkedCar.values();
int index = rand.nextInt(carArray.length);
ParkedCar randomCar = carArray[index];

答案 2 :(得分:0)

尝试:ParkedCar c = ParkedCar.values()[new Random()。nextInt(ParkedCar.values()。length)];