Java实用类-Enum(枚举)
1、 历史
在 JDK 1.5 之前没有枚举类型,那时候一般用接口常量来替代(例如,public static final String male )。JKD1.5之后使用 Java 枚举类型 enum 可以更贴近地表示这种常量。
2、枚举的定义
2.1 简单枚举定义
GenderEnum 性别枚举
/*
性别枚举
*/
public enum GenderEnum {
//定义枚举类型的变量(所有定义的变量都是当前枚举类型的实例名)
//默认所有的定义变量,都是public static final 类型,不需要手动声明,而且一般都是大写
MAN,WOMAN
}
测试
public static void main(String[] args) {
Student student = new Student();
student.setStuNo("S001");
student.setStuName("张三");
//枚举类型赋值,都只能赋值为枚举中已经定义的实例名
student.setGender(GenderEnum.MAN);
student.setGender(GenderEnum.WOMAN);
//非指定枚举类型,都不需要赋值,编译异常
//student.setGender("男");
student.setStuAge(20);
System.out.println(student);
}
运行结果:

2.2 带参枚举定义
必须声明内部私有属性,方便获取枚举类型实例的参数值
必须声明跟实例对象相符合的内部私有构造方法
对外声明get方法,只允许通过枚举的实例获取对应参数,不允许setter方法,枚举实例是通过构造方法初始化的
UserStatusEnum 用户状态枚举
/*
用户状态
*/
public enum UserStatusEnum {
//带参数枚举类型
STATUS_NORMAL("0","正常"),
STATUS_LOCK("1","锁定"),
STATUS_OFF("1","注销");
//必须声明内部私有属性,方便获取枚举类型实例的参数值
private String statusCode;
private String statusMsg;
//必须声明跟实例对象相符合的内部私有构造方法
private UserStatusEnum(String statusCode,String statusMsg){
this.statusCode = statusCode;
this.statusMsg = statusMsg;
}
//对外声明get方法,只允许通过枚举的实例获取对应参数,不允许setter方法,枚举实例是通过构造方法初始化的
public String getStatusCode() {
return statusCode;
}
public String getStatusMsg() {
return statusMsg;
}
//一般,在枚举类中,要提供一个静态的普通方法,当你不知道枚举的定义,
//只知道状态码时,方便获取对应的说明
public static String getMegsByCode(String statusCode){
//枚举的遍历
for (UserStatusEnum statusEnum : UserStatusEnum.values()){
//判断传入的状态码,是否在内部定义中存在
if(statusEnum.statusCode.equals(statusCode)){
return statusEnum.statusMsg;
}
}
//不存在
return null;
}
}
测试
public class TestUserStatusEnum {
public static void main(String[] args) {
//测试带参枚举
//假设当前用户状态枚举是锁定
System.out.println(UserStatusEnum.STATUS_NORMAL.getStatusCode()); //0
System.out.println(UserStatusEnum.STATUS_NORMAL.getStatusMsg()); //正常
//假设当前用户状态枚举是注销
System.out.println(UserStatusEnum.STATUS_OFF.getStatusCode()); //1
System.out.println(UserStatusEnum.STATUS_OFF.getStatusMsg()); //注销
//测试枚举提供的普通方法
//假设知道用户的状态是0,如何获取对应的说明
System.out.println(UserStatusEnum.getMegsByCode("0")); //正常
}
}
3、Switch选择结构支持的类型
| byte |
|---|
| char |
| short |
| int |
| Enum(枚举,JDK1.5增加) |
| String (JDK1.7增加) |
注意:一旦入参是一个枚举类型的实例,所有的case选择允许值都必须是枚举类型声明的实例常量;
//验证switch选择结构支持的类型:int及以下(int short char byte) 枚举 String
switch(UserStatusEnum.STATUS_NORMAL){ //正常
//一旦入参是一个枚举类型的实例,所有的选择允许值都必须是枚举类型声明的实例常量
case STATUS_OFF:
System.out.println("注销");
break;
case STATUS_LOCK:
System.out.println("锁定");
break;
case STATUS_NORMAL:
System.out.println("正常");
break;
}
Java实用类-Enum(枚举)的更多相关文章
- 【学习笔记】Java实用类:枚举(Enum)
Java API(Java Application Programming Interface)Java应用程序编程接口... 实用类:Java API提供了几个常用包: 1.java.lang:编写 ...
- Java中Enum枚举的使用
三种不同的用法 注意项: 1.在switch中使用枚举能使代码的可读性更强. 2.如果要自定义方法,那么必须在enum实例序列的最后添加分号.而且Java要求必须先定义enum实例. 3.所有 ...
- java之enum枚举(2015年05月28日)
背景: 今天启动了一个新的项目,由于要从之前的旧项目中拿过来一些代码,所以就看了下公司之前项目代码,发现有定义的常量类,也有枚举类,然后就在想着两者的功能差不多,那他们之间到底有什么区别呢,所以就决定 ...
- Java 基础 enum枚举类 的创建/使用/接口继承 ,以及手动创建枚举类的对象为:public static final
笔记: import java.lang.*; /**一:枚举类 : enum Season implements info { s1(),s2(),s3(),s4() }; //s1--s4 放在S ...
- java 中 enum 枚举的使用
package test3; public final class Program { public static void main(String[] args) { // Sys ...
- Rhythmk 一步一步学 JAVA (18): Enum枚举学习
枚举定义: public enum SizeEnum { SMALL, BIG, BIGEST }; public enum SizeStringEnum { SMALL("小") ...
- MyBatis 中如何调用 Java 的 enum (枚举) 字段
事先作成一 enum,如下: public enum CityCode { ALL("000"), BEIJING("010"), SHANGHAI(" ...
- java enum(枚举)的使用
在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集” ...
- java enum(枚举)使用详解 + 总结
enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中. 下面是我在使用 enum 过程中的一些经验和总结,主要包括如下内容: 1. 原始 ...
随机推荐
- 阿里云申请SSL证书 并部署到SpringBoot项目
前提 有一台阿里云的服务器(安装了java环境) 有已经备案的域名,并且域名绑定上面的服务器 申请SSL证书 申请教程:https://blog.csdn.net/yunweifun/article/ ...
- DirectX11 With Windows SDK--38 级联阴影映射(CSM)
前言 在31章我们曾经实现过阴影映射,但是受到阴影贴图精度的限制,只能在场景中相当有限的范围内投射阴影.本章我们将以微软提供的例子和博客作为切入点,学习如何解决阴影中出现的Atrifacts: 边缘闪 ...
- 算法基础③--DFS解决迷宫问题入门
迷宫问题 通过深度优先搜索(DFS)方法实现. 迷宫问题一 一天蒜头君掉进了一个迷宫里面,蒜头君想逃出去,可怜的蒜头君连迷宫是否有能逃出去的路都不知道. 看在蒜头君这么可怜的份上,就请聪明的你告诉蒜头 ...
- Java语言学习day38--8月13日
###11哈希表的数据结构 A:哈希表的数据结构:(参见图解) 加载因子:表中填入的记录数/哈希表的长度 例如: 加载因子是0.75 代表: 数组中的16个位置,其中存入16*0.75=12个元素 如 ...
- DFA算法之内容敏感词过滤
DFA 算法是通过提前构造出一个 树状查找结构,之后根据输入在该树状结构中就可以进行非常高效的查找. 设我们有一个敏感词库,词酷中的词汇为:我爱你我爱他我爱她我爱你呀我爱他呀我爱她呀我爱她啊 那么就可 ...
- JVM调优篇
点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 基础概念 一般JVM调优,重点在于调整JVM堆大小.调整垃圾回收器 jv ...
- Matlab学习笔记 绘图
1.二维曲线(1)plot函数①plot函数的基本用法:plot(x,y),其中x和y分别用于存储x坐标和y坐标数据. >>x=[1,2,3]; >>y=[4,5,6]; &g ...
- nacos 详细介绍(二)
五.nacos的namespace和group namespace:相当于环境,开发环境 测试环境 生产环境 ,每个空间里面的配置是独立的默认的namespace是public, namespace可 ...
- ElasticSearch7.3学习(二十四)----相关度评分机制详解
1.算法介绍 relevance score(相关性分数) 算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度.Elasticsearch使用的是 term freque ...
- windbg的时间旅行实现对 C# 程序的终极调试
一:什么是时间旅行 简而言之就是把程序的执行流拍成vlog,这样就可以对 vlog 快进或者倒退,还可以分享给别人做进一步的分析,是不是想都不敢想. 很开心的是 windbg preview 版本中已 ...