概述
1.为何要有枚举类
对于某一个类的对象有限且确定的情况,以及需要定义一组通用的常量的并将其作为组件供程序其他部分调用的情况,使用枚举更加简洁(写法简洁),安全(提供了安全检查的功能),当然枚举也可以用来实现责任链和多路分发
实际项目中枚举和switch的结合使用是绝配
2.枚举类的使用
2.1.自定义枚举类型
/**
* ===========================================================
* @function 这个类用来,自定义中国的四大神兽(有限且确定)枚举类
* ===========================================================
*/
public class FourSacredBeasts {
public static void main(String[] args) {
System.out.println(FourSacredBeasts.BAIHU.toString());//FourSacredBeasts{direction='西方', elements='金'}
}
//1.私有化属性和构造器(不允许外部创建和修改)private final修饰属性,private 修饰构造器
private final String direction;//每个神兽的守护方位(东南西北中)
private final String elements;//每个神兽的属性(金木水火土)
private FourSacredBeasts(String direction, String elements) {
this.direction = direction;
this.elements = elements;
}
//2.创建所有的枚举实例public static final修饰
public static final FourSacredBeasts QINGLONG=new FourSacredBeasts("东方","木");
public static final FourSacredBeasts BAIHU=new FourSacredBeasts("西方","金");
public static final FourSacredBeasts ZUQUE=new FourSacredBeasts("南方","火");
public static final FourSacredBeasts XUANWU=new FourSacredBeasts("北方","水");
//创建toString方法用于测试
@Override
public String toString() {
return "FourSacredBeasts{" +
"direction='" + direction + ''' +
", elements='" + elements + ''' +
'}';
}
}
2.2使用enum关键字定义枚举类型(推荐)
/**
* ===========================================================
* @function 这个类用来,使用enum关键字来定义中国的四大神兽(有限且确定)枚举类
* ===========================================================
*/
public enum FourSacredBeasts {
//1.显式列出所有的枚举对象(必须放在第一位)
QINGLONG("东方","木"),
BAIHU("西方","金"),
ZUQUE("南方","火"),
XUANWU("北方","水");
//2.私有化属性和构造器(不允许外部创建和修改)private final修饰属性,private 修饰构造器
private final String direction;//每个神兽的守护方位(东南西北中)
private final String elements;//每个神兽的属性(金木水火土)
private FourSacredBeasts(String direction, String elements) {
this.direction = direction;
this.elements = elements;
}
//创建toString方法用于测试
@Override
public String toString() {
return "FourSacredBeasts{" +
"direction='" + direction + ''' +
", elements='" + elements + ''' +
'}';
}
public static void main(String[] args) {
System.out.println(FourSacredBeasts.BAIHU); //FourSacredBeasts{direction='西方', elements='金'}
}
}
3.程序中使用枚举
3.1 定义返回值常量
代码如下
public enum ResultCode {
SUCCESS(200, "操作成功"),
FAILED(201, "操作失败"),
EMPTY_RESULT(202, "未查询到数据"),
ERROR(999, "操作失败"),
VALIDATE_FAILED(299, "参数检验失败"),
VERIFY_CODE_ERROR(299, "验证码校验失败"),
UNAUTHORIZED(900, "暂未登录或token已经过期"),
FORBIDDEN(888, "没有相关权限"),
USER_UNAVAILABLE(300, "用户被禁用");
private Integer code;
private String messange;
ResultCode(Integer code, String messange) {
this.code = code;
this.messange = messange;
}
public Integer getCode() {
return code;
}
public String getMessange() {
return messange;
}
}
3.2 实现单例模式
代码如下(Java虚拟机在加载枚举类的时候,会使用ClassLoader的loadClass方法,这个方法使用了同步代码块来保证线程安全)
public enum Singleton {
INSTANCE;
public void explain() {
System.out.println("我是唯一实例,且线程安全");
}
//测试方法
public static void main(String[] args) {
INSTANCE.explain();//我是唯一实例,且线程安全
}
}
最后
以上就是谦让含羞草为你收集整理的枚举(是一种针对特定情况而定义的简洁安全的特定类型)的全部内容,希望文章能够帮你解决枚举(是一种针对特定情况而定义的简洁安全的特定类型)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复