java如何将String转换为enum
2023-09-14 09:06:16 时间
问题
假设定义了如下的enum(枚举):
public enum Blah {
A, B, C, D
}
已知枚举对应的String值,希望得到对应的枚举值。例如,已知"A",希望得到对应的枚举——Blah.A,应该怎么做?
Enum.valueOf()是否能实现以上目的,如果是,那我如何使用?
答案
是的,Blah.valueOf(“A”) 将会得到 Blah.A
静态方法valueOf() 和 values() 不存在于源码中,而是在编译时创建,我们也可以在JavaDoc查看到它们,比如 Dialog.ModalityTyp 就中出现这两个方法。
其他答案
当文本和枚举值不同时,可以采用这种方式:
public enum Blah {
A("text1"),
B("text2"),
C("text3"),
D("text4");
private String text;
Blah(String text) {
this.text = text;
}
public String getText() {
return this.text;
}
public static Blah fromString(String text) {
for (Blah b : Blah.values()) {
if (b.text.equalsIgnoreCase(text)) {
return b;
}
}
return null;
}
}
fromString方法中,throw new IllegalArgumentException(“No constant with text " + text + " found”) 会比直接返回null更优秀.
其他答案
我有一个挺赞的工具方法:
/**
* A common method for all enums since they can't have another base class
* @param <T> Enum type
* @param c enum type. All enums must be all caps.
* @param string case insensitive
* @return corresponding enum, or null
*/
public static <T extends Enum<T>> T getEnumFromString(Class<T> c, String string) {
if( c != null && string != null ) {
try {
return Enum.valueOf(c, string.trim().toUpperCase());
} catch(IllegalArgumentException ex) {
}
}
return null;
}
你可以这么使用:
public static MyEnum fromString(String name) {
return getEnumFromString(MyEnum.class, name);
}
相关文章
- java字符串的拆分_Java中的字符串分割 .
- java bufferedwriter 编码,Java BufferedWriter对象与utf-8
- java怎么用_如何使用Java编写程序
- java获取服务器路径_Java获取此次请求URL以及服务器根路径的方法「建议收藏」
- java对象转换为json字符串_复杂json字符串转对象
- Java的定时器_JAVA定时任务
- java list 转json 字符串_Java之JSON字符串与List集合之间相互转换
- Java 中图片与二进制之间如何相互转换?
- Java学习-如何编译适配java版本的jar包
- JAVA每月运势api调用代码实例详解编程语言
- 数据如何使用Java读取MySQL数据(java读取mysql)
- 学习如何使用Linux环境运行Java程序(linux下的java)
- Linux下快速编写高效的Java代码(linux写java)
- Linux下安装Java的简易步骤(linux如何安装java)
- 如何在Linux系统中安装Java(linux中安装java)
- 使用Java语言写Redis实现一个分布式缓存系统(用java写个redis)
- 学习Java编程,攻克Oracle难题(java学oracle)
- 从Java到Oracle轻松操作数据库(java写oracle库)