Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java如何将String转换为enum

java如何将String转换为enum

作者头像
硬核编程
发布于 2020-07-23 07:11:24
发布于 2020-07-23 07:11:24
4.2K00
代码可运行
举报
运行总次数:0
代码可运行

Java 必知必会 第 7 篇

(精挑 Stack Overflow在java中排名前100的问题

懂得这些问题的答案帮你解决80%开发问题 )

问题

假设定义了如下的enum(枚举):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public enum Blah {
 
    A, B, C, D
 
}
 

已知枚举对应的String值,希望得到对应的枚举值。例如,已知"A",希望得到对应的枚举——Blah.A,应该怎么做? Enum.valueOf()是否能实现以上目的,如果是,那我如何使用?

答案

是的,Blah.valueOf("A") 将会得到 Blah.A

静态方法valueOf() 和 values() 不存在于源码中,而是在编译时创建,我们也可以在JavaDoc查看到它们,比如 Dialog.ModalityTyp 就中出现这两个方法。

其他答案

当文本和枚举值不同时,可以采用这种方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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更优秀.

其他答案

我有一个挺赞的工具方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 
 * 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;
 
}
 

你可以这么使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static MyEnum fromString(String name) {
 
 return getEnumFromString(MyEnum.class, name);
 
}
 
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 硬核编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
From表单提交的几种方式 原
<body> <form action="https://my.oschina.net/u/3285916" method="get" name="formOne" id="formId"> name:<input type="text" name="name"> pwd:<input type="password" name="pwd"><br/> <input type="button" value="1提交" onclick="document.form
醉生萌死
2018/11/05
8320
JavaScript学习笔记(二)——从简单开始学起
学习新知识,探究新方法,是一个由"知器"——》"格物"——》"明理"——》"成道"依次演变的进化过程,需要循序渐进、由浅入深, 不过最终是否可以修炼成道骨仙风的"佛"家境界,则全凭个人的恒心、悟性和造化
阳光岛主
2019/02/19
1K0
(一)熟练HTML5+CSS3,每天复习一遍
学习网页的概念和分类,了解静态网页和动态网页的不同;了解网页浏览器的工作原理。了解HTML,XHTML,HTML5的概念,制作简单的HTML页面的开发。
达达前端
2020/10/29
3.1K0
PHP-表单提交数据的两种方式
1.3 表单提交数据的两种方式 1.3.1 两种方式 1、get 2、post <form method="post" action=""></form> <form method="get" a
cwl_java
2020/03/26
2.2K0
1.Android网络编程-HTML介绍
超文本标记语言(HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。
诺谦
2020/02/18
1.3K0
1.Android网络编程-HTML介绍
Javascript中最常用的55个经典技巧(转)
1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键  <table border oncontextmenu=return(false)><td>no</table> 可用于Table  2. <body onselectstart="return false"> 取消选取、防止复制  3. onpaste="return false" 不准粘贴  4. oncopy="return false;" oncut="return fal
阿豪聊干货
2018/08/09
5130
PHP全栈学习笔记3
trim()函数,用于去除字符串首尾空格和特殊字符 返回的是去掉的空格和特殊字符后的字符串
达达前端
2019/07/03
1.1K0
PHP全栈学习笔记3
PHP的文件上传操作
HTML5学堂:关于文件上传,主要包括“构建基本表单”-“使用AJAX发送请求,上传文件”-“使用PHP获取文件基本信息”-“执行SQL语言,返回基本图片路径”-“使用DOM操作设置预览图路径”。一起
HTML5学堂
2018/03/12
5.2K0
PHP的文件上传操作
form实现表单提交的各种方法(表单提交源码)
这种方法实际上是调用了一个javascript函数,使用javacript函数来提交表单,方法就非常多非常灵活了,比如可以把它加入到任意一个标签的onclick事件中:
全栈程序员站长
2022/08/01
6K0
get和post表单提交
GET的提交方式,用户输入结果会显示在地址栏,安全性不好,地址栏提交数据大小限制2K。
十月梦想
2018/08/29
9990
get和post表单提交
自制在线富文本编辑器,精简完整版
 不需要插入图片功能的去掉php代码然后将.php文件改为.html即可变成本地文本编辑器,是不是很酷!当然功能跟world比没那么强大!
超级小可爱
2023/02/17
1.9K0
自制在线富文本编辑器,精简完整版
用户登录与注册模板
用户登录与注册模板html代码 预览: 代码: index.html <!-- index.html --> <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css"> <
小狐狸说事
2023/01/11
9K3
用户登录与注册模板
python表单提交
python写爬虫模拟表单提交的库其实有很多,我使用的是Requests库进行简单的表单提交。
py3study
2020/01/07
5K0
一个搜索条样式,包括select的美化
一直以来用CSS控制select都没有实现过。还是只能用JS来模拟。 by youku <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona
练小习
2017/12/29
9110
常见的Form表单提交方式
在进行项目编程的时候,我们难免会去编写一些简单的前端页面. 而编写前端页面就力不开 form表单的支持. 下面就form表单的提交方式进行如下探寻
时间静止不是简史
2020/07/25
3.6K0
form表单提交的几种方式
完成后启动项目 并访问http://localhost:8080/query.html 输入用户名和密码
全栈程序员站长
2022/07/21
6.8K0
form表单提交的几种方式
js – form表单提交不刷新
大家已经发现了, 当我们点击submit提交form表单的时候, 他会刷新一次, 如果不想它刷新的话有下面两种方法:
全栈程序员站长
2022/08/01
15.3K0
6.HTML输入表单标签元素介绍
描述: 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入内容,其包含 文本框、文本域(textarea)、按钮、下拉列表、单选框(radio-buttons)、复选框(checkboxes)等元素都要放在form标签里面或者进行form的id值的调用,否则提交的数据到不了后端。
全栈工程师修炼指南
2023/03/21
4.9K0
javascript当中表单提交(空格提交的问题)
4.表单提交(空格提交的问题) 例 4.1(form.submitIEFF.html) <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <script language=javascript> function check() { var form = document.getElementById("regForm"); if (form.user.value == "") { alert("用户名不能为空!"); } else { form.submit(); } } </script> <form method=post id="regForm" action="jsp1.jsp"> 用户<input type="text" name="user"/><br> <INPUT TYPE="button" onclick="check();" id="regBut" value="提交"/> </form> 以上例子很好,但有个问题,当光标放在文本框里时,即使空格,回车也会提交。不信你试试,浏览器(IE和火狐)都这样。下面给出解决办法。 例 4.1_a <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <script language=javascript> function check() { var form = document.getElementById("regForm"); if (form.user.value == "") { alert("用户名不能为空!"); } else { form.submit(); } } </script> <form method=post id="regForm" action="jsp1.jsp"> 用户<input type="text" name="user" onkeydown="if(event.keyCode==13) return false;"/><br> <INPUT TYPE="button" onclick="check();" id="regBut" value="提交"/> </form> 或者用下面的例子,里面用了onSubmit,只要提交,它就会被执行。
马克java社区
2019/10/17
1.5K0
javascript当中表单提交(空格提交的问题)
表单提交刷新页面问题
今天开发中遇到了一个问题,刚开始没有头绪,不知道怎样解决,后来静下来一想,搜索下吧,经过搜索相关资料,很好的解决。 <form name="keywordForm" method="post" action=""> <p id="profile_nav"> <label for="profile"> 关键字搜索: </label> <input style="width:80; height:20" type="text" name="keyword" onkeypress="searchKey
wangxl
2018/03/07
2K0
相关推荐
From表单提交的几种方式 原
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验