Virus721
Virus721

Reputation: 8315

Java - Generic function to parse enums from strings

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

Answers (1)

Edwin Dalorzo
Edwin Dalorzo

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

Related Questions