一:枚举的概念

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

二:定义枚举类

1:定义枚举,其中Grade枚举可以看做类,A、B、C、D、E可以看做对象,因为它定义了有参数的构造方法,所以

对象后面必须带参数。

 // 定义枚举Grade
enum Grade {
A("90-100"), B("80-90"), C("70-80"), D("60-70"), E("小于60");
private String value; //成员变量 private Grade(String value) { //构造方法
this.value = value;
} public String getValue() {
return this.value;
}
}

2:调用枚举

     @Test
public void testEnum() {
print(Grade.A);
} public void print(Grade g) { //传参为枚举
System.out.println(g.getValue());
}

三:带抽象方法的枚举类

1:定义枚举

 // 定义枚举Grade
enum Grade {
A("90-100") {
@Override
public String localeValue() {
return "优秀";
}
},
B("80-90") {
@Override
public String localeValue() {
return "良好";
}
},
C("70-80") {
@Override
public String localeValue() {
return "中等";
}
},
D("60-70") {
@Override
public String localeValue() {
return "及格";
}
},
E("小于60") {
@Override
public String localeValue() {
return "不及格";
}
};
private String value; // 成员变量 private Grade(String value) { // 构造方法
this.value = value;
} public String getValue() {
return this.value;
} public abstract String localeValue(); // 定义抽象方法
}

2:调用

 @Test
public void testEnum() {
print(Grade.A);
} public void print(Grade g) { // 传参为枚举
System.out.println(g.getValue());
System.out.println(g.localeValue());
}

四:枚举中常用的方法

1:枚举类的构造函数必须是私有的,因为枚举是向程序传入特定的数据,如果是构造是public,那么

程序就会new很多对象,违反枚举的意义。

2:枚举可以作为单例设计模式,如下:

 enum Year {
A; // 只有一个对象,构造函数私有,不能实例化
} public class Year {
private final Year y = new Year(); // 定义一个对象 private Year() { // 私有化构造方法 } public static Year getInstance() {
return y;
}
}

3:常用api

 @Test
public void testEnumApi() {
System.out.println(Grade.A.name()); // 输出名称
System.out.println(Grade.A.ordinal());// 输出序号
String str = "A"; // 将字符串转换为枚举
Grade g = Grade.A.valueOf(str);
System.out.println(g);
// 获取所有的枚举对象
Grade[] grades = Grade.values();
for (Grade grade : grades) {
System.out.println(grade);
} }

将字符串转换为枚举使用场景:

客户端表单提交时,提交的数据(例如:性别)是字符串,在服务器端获取数据时,可以转换为枚举,如果能够

转换,则验证通过;如果不能,则抛出异常,告知提交失败!

javaweb学习总结三(枚举)的更多相关文章

  1. JavaWeb学习总结(三)——Tomcat服务器学习和使用(二) 包含https 非对称秘钥 NB

    JavaWeb学习总结(三)--Tomcat服务器学习和使用(二) 一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命 ...

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

    收藏 JavaWeb学习总结(三)——Tomcat服务器学习和使用 http://www.cnblogs.com/xdp-gacl/p/3744053.html

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

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

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

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

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

    一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的exe ...

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

    转载自 http://www.cnblogs.com/xdp-gacl/p/3744053.html 一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWe ...

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

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

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

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

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

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

随机推荐

  1. centos6.4 挂载ntfs分区

    默认情况下,CentOS 6.4不支持Widows NTFS硬盘分区读写,要想把NTFS格式的磁盘挂载到CentOS 6.3下面需要安装第三方的插件ntfs-3g,这里我们采用编译安装插件. 1.安装 ...

  2. elisp debug

    M-x  是运行command的意思. 若使用常规Emacs debugger(即不使用edebuger),先把要debug的函数加入到debug-on-entry:  M-x   debug-on- ...

  3. unsupported dynamic reloc R_ARM_REL32 AND hidden symbol '__dso_handle' is not defined

    项目里编译codec src\makefiles\android\codec\Makefileline 25 原本用 4.6 不会报错-L/data/android/android-ndk/sourc ...

  4. HDU 5752 Sqrt Bo (数论)

    Sqrt Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5752 Description Let's define the function f ...

  5. thymeleaf中的th:assert用法

    th:assert 断言标签 th:assert属性可以指定一个以逗号分隔的表达式对其进行评估并生产适用于每一个评价,如果不抛出异常 <div th:assert="${onevar} ...

  6. code::blocks编译多文件 没有定义的引用

    code::blocks是一款据说灰常强大的IDE,以前虽然也经常使用,但一没用过高度功能,二来没用它写过工程性的东西,简单点说就是一个以上的源文件并且加入其他非标准的头文件,今天想做一个多文件的语法 ...

  7. 常见MFC UI界面库

    Xtrme toolkit,BCGControlBar,SkinMagic,AppFace,Skin++,Uskin++,SYGUI,LibUIDK,GuiToolkit,GardenUI等等,除了后 ...

  8. 通过SCVMM分配SMB 3.0 文件共享

    1.创建SMB群集共享,赋予Hyper-V主机. Hyper-V群集名称.Hyper-V管理员.Hyper-V服务账户完全控制权限 2.VMM提供程序导入 文件服务器(运行方式账户要对文件服务器群集的 ...

  9. android 手电筒的实现

    android手机用闪光灯做成手电筒的应用非常多,可是有的不能用. 后来发现是除了把 camera device的 flashmode设置成torch外还要打开预览: 以下是代码: MainActiv ...

  10. C#实现汉诺塔问题

    汉诺塔的由来:汉诺塔是源自印度神话里的玩具.上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘.上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且 ...