一:枚举的概念

定义特定的数据,尤其像一些状态位。

二:定义枚举类

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学习总结三(枚举)相关推荐

  1. javaweb学习总结(三十三)——使用JDBC对数据库进行CRUD

    javaweb学习总结(三十三)--使用JDBC对数据库进行CRUD 一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过 ...

  2. javaweb学习总结(三十九)——数据库连接池

    javaweb学习总结(三十九)--数据库连接池 一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10 ...

  3. 孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(三十九)——数据库连接池 一、应用程序直接获取数据库连接的缺点   用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要

    孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(三十九)--数据库连接池 一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对 ...

  4. JavaWeb学习总结(三)——Tomcat服务器学习和使用(二)

    一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下: 范例:将JavaWebDemoProject这个Ja ...

  5. javaweb学习总结(三十一)——国际化(i18n)

    一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...

  6. JavaWeb学习总结(三):Tomcat服务器学习和使用(二)

    一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下: 范例:将JavaWebDemoProject这个Ja ...

  7. javaweb学习总结(三十二)——JDBC学习入门

    一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...

  8. javaweb学习总结(三十)——EL函数库

    一.EL函数库介绍 由于在JSP页面中显示数据时,经常需要对显示的字符串进行处理,SUN公司针对于一些常见处理定义了一套EL函数库供开发者使用. 这些EL函数在JSTL开发包中进行描述,因此在JSP页 ...

  9. javaweb学习总结(三十八)——事务

    一.事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 例如:A--B转帐,对应于如下两条sql语句   update from account set mon ...

最新文章

  1. C++11中weak_ptr的使用
  2. 【AIX 命令学习】加载与卸载文件系统!
  3. Python3网络爬虫开发实战,抓包工具 Charles 的使用
  4. Python基础笔记(四)切片、列表生成式、迭代
  5. Mac 的 Adobe Creative Cloud 无法连接至服务器的解决办法?
  6. EntityFramework 连接数据库出错
  7. C#通过XElement写入XML文件
  8. 韩立刚计算机网络笔记-第04章 数据链路层
  9. python学习笔记——取矩阵的上三角或下三角元素
  10. ie html5缓存,ie缓存文件在哪,教您IE浏览器缓存文件在哪
  11. 今日恐慌与贪婪指数为23,恐慌程度有所下降
  12. C语言三个数相乘怎么写,编程怎么写乘法
  13. netty案例,netty4.1源码分析篇五《一行简单的writeAndFlush都做了哪些事》
  14. 360个人图书馆复制不了
  15. 不仅仅是技术——亚马逊云科re:Invent2022
  16. c语言编写的鼠标键盘录制程序,用C语言写的鼠标驱动程序
  17. 为python安装matlab引擎
  18. 亲手撸了一个SpringBoot+Vue的企业级项目(附源码)
  19. 微信公众号自定义二维码关注后自动为粉丝分组
  20. 2021-2027全球及中国代谢笼行业研究及十四五规划分析报告

热门文章

  1. mysql存储过程加多个创建表_mysql 存储过程创建多个表
  2. 量子信息之父辞世,开山论文写完14年才被发表,晚年去当建筑工人
  3. 全球最大的公开人脸数据集 | 清华大学芯翌科技联合发布
  4. 中国最新奥数竞赛成绩出炉:南师大附中女生严彬玮满分夺冠!60人国家集训队名单公布...
  5. 特斯联再获20亿元融资,跻身AIoT独角兽,光大京东讯飞万达入股
  6. 丢人现眼……GitHub阿波罗11号代码仓库惨遭中文灌水
  7. 华中科大提出EAT-NAS方法:提升大规模神经模型搜索速度
  8. PostgreSQL: epoch 新纪元时间的使用
  9. Exchange Log Collector Script
  10. 055——VUE中vue-router之路由参数的随意设置与伪静态链接地址处理: