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

标签 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" );

最佳答案

你可以做类似的事情

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

关于Java - 从字符串中解析枚举的通用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25487619/

相关文章:

java - 构造函数错误 - 无法应用于给定类型

java - 拖放开关盒,无法访问代码?

c++ - 为模板类重载运算符<<

c++ - C++ 模板基类的编译器警告

objective-c - 如何自动链接框架或库

Java:作用于同一元素的锁定函数

java - 使用多线程生成字符串的所有组合

c# - 如何将对象数组转换为泛型类型数组

java - 为什么将泛型类转换为 Class<T> 不安全?

c# - 使用泛型转换为基类