I am writing in Java and trying to create a method that will take any Enum class that I pass to it, as described here (mostly): Java: Generic method for Enums
I am getting a problem when I try to pass an enum into this type of method. It wants me to change the method to take a specific Enum class. Does anyone know what I am doing wrong?
Here is my version of the method:
public Class Presenter{
public static <E extends Enum<E>> List<String> getEnumString(Class<E> eClass){
List<String> returnList = new ArrayList<String>();
for (E en: EnumSet.allOf(eClass)){
returnList.add(en.name());
}
return returnList;
}
}
and here is what I am attempting to pass in. The error is saying that the argument is not applicable, and it suggests changing the method above to only take MyEnumClass:
MyEnumClass eclass;
List<STtring> string = presenter.getEnumString(eclass);
I thank anyone who can help in advance.
Thanks!
MyEnumClass eclass;
eClass is a reference to a MyEnumClass object. What you need to pass into your function is the class type itself. The syntax is:
MyEnumClass.class
The following code will do what you want. Notice I pass in MyEnumClass.class, not a variable.
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
public enum MyEnumClass
{
ENUM_1, ENUM_2, ENUM_3, ENUM_4, ENUM_5;
public static void main(String[] args)
{
for (String string : getEnumString(MyEnumClass.class))
System.out.println(string);
}
public static <E extends Enum<E>> List<String>
getEnumString(Class<E> eClass)
{
List<String> returnList = new ArrayList<String>();
for (E en : EnumSet.allOf(eClass))
{
returnList.add(en.name());
}
return returnList;
}
}
Output:
ENUM_1
ENUM_2
ENUM_3
ENUM_4
ENUM_5