Java Enums: List enumerated values from a Class<? extends Enum>

I've got the class object for an enum (I have a Class<? extends Enum>) and I need to get a list of the enumerated values represented by this enum. The values static function has what I need, but I'm not sure how to get access to it from the class object.


Solution 1:

Class.getEnumConstants

Solution 2:

If you know the name of the value you need:

     Class<? extends Enum> klass = ... 
     Enum<?> x = Enum.valueOf(klass, "NAME");

If you don't, you can get an array of them by (as Tom got to first):

     klass.getEnumConstants();

Solution 3:

using reflection is simple as calling Class#getEnumConstants():

List<Enum<?>> enum2list(Class<? extends Enum<?>> cls) {
   return Arrays.asList(cls.getEnumConstants());
}