枚举的使用总结

1.这两天项目经理在问某几张表 状态值01 02 03 分别对应的什么,类似的还有类型等其他字段.要么是因为数据库模型设计的时候 备注不全,要么是因为代码中备注不足的原因 导致的问题,对此 项目经理提出使用枚举 对状态及类型字段 所有出现数值进行一个列举,这样方便后面的开发者使用. 同时还兼顾使用效率高简洁的特点. 同时声明含有参数的枚举类型成员 ,已达到灵活配置参数的目的

2.所以准备回顾一下枚举的使用:
枚举的出现主要是为了解决 常量声明麻烦 不简洁,同时兼顾类型检查的作用.以往我们声明常量,可采用配置文件xml或者 使用private static final 修饰的成员变量的方式,比如xml配置文件 我在项目中配置外部接白名单ip及秘钥信息的时候 往往采用的就是这种方式,而使用private static final的声明方式的时候 往往是在做单元测试的时候 将常量信息声明在 类的成员变量中使用. 而枚举现在这个项目中基本没怎么用,有也是项目经理 列举某个字段所有情况用的. 虽说 枚举存在着运行效率高,简洁 传入类型检查的作用,本着进一步探究学习的目的,特此记录下

3.枚举可以把每个枚举类型都看作一个实例,以下是枚举常见的几种使用方式

1.接口中声明常量+ 类中创建内部枚举类 的 方式(不常用)
比如

interface Constatnt{
 // 接口中的成员变量 由于无法修改 所以不添加static final修饰符一样可以
  private static final  int Constant_A=1;
  private static  fianl int Constant_B=19;
}

public  void  TestEnum(){
   enum Constatnt2{
    Constant_A,Constant_B;
  }
  private   static  void  doit(int a){//接口常量初始化
    switch(a){
     case   Constatnt.Constant_A:
     System.out.println("Constant_A");
     case  Constatnt.Constant_B:
     System.out.println("Constant_B");
   }  
 }

private   static  void  doit2(Constant c){//枚举类型初始化
    switch(c){
     case   Constant2.Constant_A:
     System.out.println("Constant_A");
     case Constant2.Constant_B:
     System.out.println("Constant_B");
   }  
 }


public  void  static main(String[] args){
  doit(Constant.Constant_A);//接口常量初始化
  doit2(Constant2.Constant_A);//枚举类型初始化A
  doit2(Constant2.Constant_B);//枚举类型初始化2
  doit(3);//接口常量初始化 整形即可
 // doit2(3);枚举常量声明  不存在的参数 编译不通过
}
}

2.声明含有参数枚举类型

public class ShowEnum {

	enum Constants2 {// 将常量放入到枚举中,
		COMPANY("01"),BANK("02"),PLATFORM("03");
		private String desc;
		private Constants2(String desc) {//声明含有参数的枚举类型成员,必须含有参数的构造参数
			this.desc = desc;
		}
		public String getDesc() {
			return desc;
		}
		public void setDesc(String desc) {
			this.desc = desc;
		}
		
		
	}

	public static void main(String[] args) {
		//使用枚举类型的values方法,遍历枚举类中的所有变量,常用于声明枚举类型包含2中
		for(int i=0;i<Constants2.values().length;i++){
			System.out.println(Constants2.values()[i].getDesc());
		}
	}
}

3.声明2个参数的枚举类型(重点需要掌握的内容,使用枚举列举所有的情况,业务中使用枚举 进行判断相关字段对应的含义, 一旦)

public class ShowEnum2 {

	enum Constants2 {// 将常量放入到枚举中
		COMPANY("01","企业"),BANK("02","银行"),PLATFORM("03","平台");
		private String code;
		private String desc;
		
		
		private Constants2(String code, String desc) {
			this.code = code;
			this.desc = desc;
		}
		public String getDesc() {
			return desc;
		}
		public void setDesc(String desc) {
			this.desc = desc;
		}
		public String getCode() {
			return code;
		}
		public void setCode(String code) {
			this.code = code;
		}
		
		public static  String getDESC(String code){
			for(int i=0;i<Constants2.values().length;i++){
			   if(Constants2.values()[i].getCode().equals(code)){
				   return Constants2.values()[i].getDesc();
			   }
			}
			return null;
			
		}
			
	}
	
	public static void main(String[] args) {
		for(int i=0;i<Constants2.values().length;i++){
			System.out.println(Constants2.values()[i].getCode()+","+Constants2.values()[i].getDesc());
		}
		
		System.out.println(Constants2.getDESC("02"));
	}
	

4.其中 我们需要掌握的常用枚举api包括以下几个
values() 返回有枚举类型组成的数组
valuesOf(String args) 将字符串转换为枚举类型参数
ordinal(); 返回枚举类型在枚举中的位置

5.枚举的应用使用场景: 参考文章地址
https://blog.youkuaiyun.com/cndmss/article/details/51441617
目前接触到的主要作用就是依据状态 寻找对应具体的值, 或者像这篇文章中提到的设计接口中时 对应错误码及错误描述的设定.

总结:总的来讲 主要是熟悉枚举的作用为了更方便的声明常量的一种方式,具有类型安全(枚举类型初始化 类型检查),简洁有效(看起来更紧凑 简洁 优雅),交互性好(可以利用枚举中的各种api),运行效率高(api,专门声明常量的类型 java.lang.Enum),所以以后在声明常量或者写业务逻辑的时候涉及到状态 判断 使用枚举 无疑直接使用数字 更加直观 ,简洁. 同时如果相关状态值 发生变化,可以达到灵活配置的目的,而不用去业务逻辑中一处处修改的目的.增加代码的可读性.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值