Java - 从字符串中解析枚举的通用函数

时间:2014-08-25 13:58:44

标签: java templates generics enums

我需要创建一个通用函数来解析字符串中的枚举,但我不确定要使用的语法。

这不起作用,但它说明了我想做的事情:

public <E extends Enum<E>> getEnum( some params, <E extends Enum<E>> defaultVal )
{
    // Some stuff

    return E.valueOf( enumAsString );
}

我的语法有什么问题? 谢谢:))

编辑:我怎么用这个?在C ++中我会做SomeEnum e = getEnum<SomeEnum>( ... );

编辑:

enum EnumA
{
    A_A, A_B, A_C
};

enum EnumB
{
    B_A, B_B, B_C
};

我想这样做:

String enumAsStr = "A_B";
EnumA ea = getEnum< EnumA >( enumAsStr, "A_A" );

enumAsStr = "B_C";
EnumB eb = getEnum< EnumB >( enumAsStr, "B_A" );

1 个答案:

答案 0 :(得分:1)

您可以执行类似

的操作
public <E extends Enum<E>> E getEnum( String text, Class<E> klass){
   return Enum.valueOf(klass, text );
}

所以,例如,如果有一个枚举字母

public enum Letter { A, B, C}

您可以像这样使用它:

Letter someLetter = getEnum("A", Letter.class);
System.out.println(someLetter); //A