Reputation: 8315
I need to create a generic function that will parse enums from strings, but i'm not sure about the syntax to use.
This doesn't work, but it illustrate what i want to do :
public <E extends Enum<E>> getEnum( some params, <E extends Enum<E>> defaultVal )
{
// Some stuff
return E.valueOf( enumAsString );
}
What is wrong in my syntax please ? Thank you :)
EDIT : Also how do i use this ? In C++ i would do SomeEnum e = getEnum<SomeEnum>( ... );
EDIT :
Let
enum EnumA
{
A_A, A_B, A_C
};
enum EnumB
{
B_A, B_B, B_C
};
I would like to do :
String enumAsStr = "A_B";
EnumA ea = getEnum< EnumA >( enumAsStr, "A_A" );
enumAsStr = "B_C";
EnumB eb = getEnum< EnumB >( enumAsStr, "B_A" );
Upvotes: 1
Views: 1063
Reputation: 78579
You could do something like
public <E extends Enum<E>> E getEnum( String text, Class<E> klass){
return Enum.valueOf(klass, text );
}
So, for instance if there is an enum Letter
public enum Letter { A, B, C}
You could use it like this:
Letter someLetter = getEnum("A", Letter.class);
System.out.println(someLetter); //A
Upvotes: 5