The following code snippet will show you how to pick a random value from an enum. First we’ll create an enum
called BaseColor
which will have three valid value. These values are Red
, Green
and Blue
.
To allow us to get random value of this BaseColor
enum we define a getRandomColor()
method in the enum. This method use the java.util.Random
to create a random value. This random value then will be used to pick a random value from the enum.
Let’s see the code snippet below:
package org.kodejava.example.basic;
import java.util.Random;
public class EnumGetRandomValueExample {
public static void main(String[] args) {
// Pick a random BaseColor for 10 times.
for (int i = 0; i < 10; i++) {
System.out.printf("color[%d] = %s%n", i,
BaseColor.getRandomColor());
}
}
/**
* BaseColor enum.
*/
private enum BaseColor {
Red,
Green,
Blue;
/**
* Pick a random value of the BaseColor enum.
* @return a random BaseColor.
*/
public static BaseColor getRandomColor() {
Random random = new Random();
return values()[random.nextInt(values().length)];
}
}
}
The output of the code snippet:
color[0] = Blue
color[1] = Red
color[2] = Red
color[3] = Green
color[4] = Blue
color[5] = Blue
color[6] = Green
color[7] = Red
color[8] = Red
color[9] = Green
Latest posts by Wayan (see all)
- How do I create a generic class in Java? - January 1, 2021
- How do I convert java.util.TimeZone to java.time.ZoneId? - April 25, 2020
- How do I get a list of all TimeZones Ids using Java 8? - April 25, 2020
Nice generate enums I steal your solution 😀 but is there mistake in return
values()[random.nextInt(values().length)];
. You have to addBaseColor.values()
.The code should work just fine without using
BaseColor
class to access thevalues()
method. But I agree that using the class name to access the static method make our code clearer to read.I used the same code but changed it to fit my program. The only problem is that the roles in (roles.getRandomRole), can’t be found? I’ve copied your exact program and I can’t seem to find the problem. Do you have any suggestions?