-1

我是 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 的等价物是什么?

谢谢!

4

3 回答 3

4

你想要Enum.valueOf(String s)

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

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

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

于 2013-01-05T02:18:44.183 回答
0

Java 与 Perl 非常不同。

您不能使用字符串构建变量名然后引用它。

您实际上可以通过反射来做到这一点,但这在这里毫无意义

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

Random rand = new Random();
ParkedCar[] carArray = ParkedCar.values();
int index = rand.nextInt(carArray.length);
ParkedCar randomCar = carArray[index];
于 2013-01-05T02:13:18.627 回答
0

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

于 2013-01-05T02:18:14.937 回答