如何通过Java枚举类名和字段名获取值
如何通过Java枚举类名和字段名获取值? 示例代码如下所示,但我不知道如何将enum类作为参数传递
public enum ErrorCodes1{
OK(0),
NOT_EXIST_USER(1),
FAIL_TO_SEND_MAIL(2),
...
}
public enum ErrorCodes2{
OK(0),
NOT_EXIST_USER(1),
FAIL_TO_SEND_MESSA(2),
...
}
public void foo1()
{
foo2(ErrorCodes1.class, "NOT_EXIST_USER");
foo2(ErrorCodes2.class, "NOT_EXIST_USER");
}
public void foo2(Enum EnumClass, String EnumText)
{
int code = xxxx; //I want to get code(1) via EnumText and EnumClass, but I don't know how to do it.
}
# 1 楼答案
您可以使用
Class<>
作为函数foo2
的参数之后,可以使用
valueOf
从包含枚举值的字符串实例化枚举。我不认为这是最好的解决方案,但它的工作PS:函数的参数以小写字母开头
# 2 楼答案
选项A,简单:明确检查类型
这意味着您可以传递错误对象本身,而不必传递其类。不幸的是,
switch
不适用于类类型选项B,可能有些过分:使用反射
这将适合您的情况下,您有一个无限数量的错误代码枚举,虽然这是一个勉强合理的情况