javaweb学习总结三(枚举)
一:枚举的概念
定义特定的数据,尤其像一些状态位。
二:定义枚举类
1:定义枚举,其中Grade枚举可以看做类,A、B、C、D、E可以看做对象,因为它定义了有参数的构造方法,所以
对象后面必须带参数。
1 // 定义枚举Grade 2 enum Grade { 3 A("90-100"), B("80-90"), C("70-80"), D("60-70"), E("小于60"); 4 private String value; //成员变量 5 6 private Grade(String value) { //构造方法 7 this.value = value; 8 } 9 10 public String getValue() { 11 return this.value; 12 } 13 }
2:调用枚举
1 @Test 2 public void testEnum() { 3 print(Grade.A); 4 } 5 6 public void print(Grade g) { //传参为枚举 7 System.out.println(g.getValue()); 8 }
三:带抽象方法的枚举类
1:定义枚举
1 // 定义枚举Grade 2 enum Grade { 3 A("90-100") { 4 @Override 5 public String localeValue() { 6 return "优秀"; 7 } 8 }, 9 B("80-90") { 10 @Override 11 public String localeValue() { 12 return "良好"; 13 } 14 }, 15 C("70-80") { 16 @Override 17 public String localeValue() { 18 return "中等"; 19 } 20 }, 21 D("60-70") { 22 @Override 23 public String localeValue() { 24 return "及格"; 25 } 26 }, 27 E("小于60") { 28 @Override 29 public String localeValue() { 30 return "不及格"; 31 } 32 }; 33 private String value; // 成员变量 34 35 private Grade(String value) { // 构造方法 36 this.value = value; 37 } 38 39 public String getValue() { 40 return this.value; 41 } 42 43 public abstract String localeValue(); // 定义抽象方法 44 }
2:调用
1 @Test 2 public void testEnum() { 3 print(Grade.A); 4 } 5 6 public void print(Grade g) { // 传参为枚举 7 System.out.println(g.getValue()); 8 System.out.println(g.localeValue()); 9 }
四:枚举中常用的方法
1:枚举类的构造函数必须是私有的,因为枚举是向程序传入特定的数据,如果是构造是public,那么
程序就会new很多对象,违反枚举的意义。
2:枚举可以作为单例设计模式,如下:
1 enum Year { 2 A; // 只有一个对象,构造函数私有,不能实例化 3 } 4 5 public class Year { 6 private final Year y = new Year(); // 定义一个对象 7 8 private Year() { // 私有化构造方法 9 10 } 11 12 public static Year getInstance() { 13 return y; 14 } 15 }
3:常用api
1 @Test 2 public void testEnumApi() { 3 System.out.println(Grade.A.name()); // 输出名称 4 System.out.println(Grade.A.ordinal());// 输出序号 5 String str = "A"; // 将字符串转换为枚举 6 Grade g = Grade.A.valueOf(str); 7 System.out.println(g); 8 // 获取所有的枚举对象 9 Grade[] grades = Grade.values(); 10 for (Grade grade : grades) { 11 System.out.println(grade); 12 } 13 14 }
将字符串转换为枚举使用场景:
客户端表单提交时,提交的数据(例如:性别)是字符串,在服务器端获取数据时,可以转换为枚举,如果能够
转换,则验证通过;如果不能,则抛出异常,告知提交失败!
javaweb学习总结三(枚举)相关推荐
- javaweb学习总结(三十三)——使用JDBC对数据库进行CRUD
javaweb学习总结(三十三)--使用JDBC对数据库进行CRUD 一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过 ...
- javaweb学习总结(三十九)——数据库连接池
javaweb学习总结(三十九)--数据库连接池 一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10 ...
- 孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(三十九)——数据库连接池 一、应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要
孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(三十九)--数据库连接池 一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对 ...
- JavaWeb学习总结(三)——Tomcat服务器学习和使用(二)
一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下: 范例:将JavaWebDemoProject这个Ja ...
- javaweb学习总结(三十一)——国际化(i18n)
一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...
- JavaWeb学习总结(三):Tomcat服务器学习和使用(二)
一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下: 范例:将JavaWebDemoProject这个Ja ...
- javaweb学习总结(三十二)——JDBC学习入门
一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...
- javaweb学习总结(三十)——EL函数库
一.EL函数库介绍 由于在JSP页面中显示数据时,经常需要对显示的字符串进行处理,SUN公司针对于一些常见处理定义了一套EL函数库供开发者使用. 这些EL函数在JSTL开发包中进行描述,因此在JSP页 ...
- javaweb学习总结(三十八)——事务
一.事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 例如:A--B转帐,对应于如下两条sql语句 update from account set mon ...
最新文章
- C++11中weak_ptr的使用
- 【AIX 命令学习】加载与卸载文件系统!
- Python3网络爬虫开发实战,抓包工具 Charles 的使用
- Python基础笔记(四)切片、列表生成式、迭代
- Mac 的 Adobe Creative Cloud 无法连接至服务器的解决办法?
- EntityFramework 连接数据库出错
- C#通过XElement写入XML文件
- 韩立刚计算机网络笔记-第04章 数据链路层
- python学习笔记——取矩阵的上三角或下三角元素
- ie html5缓存,ie缓存文件在哪,教您IE浏览器缓存文件在哪
- 今日恐慌与贪婪指数为23,恐慌程度有所下降
- C语言三个数相乘怎么写,编程怎么写乘法
- netty案例,netty4.1源码分析篇五《一行简单的writeAndFlush都做了哪些事》
- 360个人图书馆复制不了
- 不仅仅是技术——亚马逊云科re:Invent2022
- c语言编写的鼠标键盘录制程序,用C语言写的鼠标驱动程序
- 为python安装matlab引擎
- 亲手撸了一个SpringBoot+Vue的企业级项目(附源码)
- 微信公众号自定义二维码关注后自动为粉丝分组
- 2021-2027全球及中国代谢笼行业研究及十四五规划分析报告
热门文章
- mysql存储过程加多个创建表_mysql 存储过程创建多个表
- 量子信息之父辞世,开山论文写完14年才被发表,晚年去当建筑工人
- 全球最大的公开人脸数据集 | 清华大学芯翌科技联合发布
- 中国最新奥数竞赛成绩出炉:南师大附中女生严彬玮满分夺冠!60人国家集训队名单公布...
- 特斯联再获20亿元融资,跻身AIoT独角兽,光大京东讯飞万达入股
- 丢人现眼……GitHub阿波罗11号代码仓库惨遭中文灌水
- 华中科大提出EAT-NAS方法:提升大规模神经模型搜索速度
- PostgreSQL: epoch 新纪元时间的使用
- Exchange Log Collector Script
- 055——VUE中vue-router之路由参数的随意设置与伪静态链接地址处理: