java枚举知识点来自jdk5.0的版本带来的新特性,下面讲解的内容分别是:
1.枚举类型
2.枚举中的参数、方法
3.遍历
在实际中对于一些基本固定的值用枚举比较好,当然实际项目中可以用到2中方式,还一种就是做数据字典,这种方式很方便的进行对常量的添加,修改比较灵活,涉及大的项目工程时候选用数据字典比较好;还一种方式就是使用java的枚举了,比较适合小的项目,定义数据集。
1.枚举类型
java枚举是一种类型,怎么理解,例子如下:
public enum ColorEnum {
red, green, yellow, blue;
}
打印结果如下:
com.gsafety.cloudframework.codegenerator.facade.entity.data.ColorEnum
blue
由java普通类改写情况如下:
package com.gsafety.cloudframework.codegenerator.facade.entity.data;
public class ColorE {
/**
* 枚举名称
*/
private final String name = "";
public String getName() {
return name;
}
public static final ColorE blue = new ColorE() {
public String getName() {
return "blue";
};
};
}
2.枚举参数、方法
枚举中的参数是枚举类型上进行给自定义变量进行赋值的一个数据来源,用构造函数进行数据的封装,方法就是对每个赋值的数据进行获取。还一种方法就是对方法的重载,直接进行赋值,就不需要用到构造函数了。
package com.gsafety.cloudframework.codegenerator.facade.entity.data;
public enum Gender {
MAN(0,"男"), WOMEN(1,"女");
private final int value;
private final String name;
Gender(int value, String name) {
this.value = value;
this.name = name;
}
public int getValue() {
return value;
}
public String getName() {
return name;
}
}
public enum OrderState {
/** 已取消 */
CANCEL {public String getName(){return "已取消";}},
/** 待审核 */
WAITCONFIRM {public String getName(){return "待审核";}},
/** 等待付款 */
WAITPAYMENT {public String getName(){return "等待付款";}},
/** 正在配货 */
ADMEASUREPRODUCT {public String getName(){return "正在配货";}},
/** 等待发货 */
WAITDELIVER {public String getName(){return "等待发货";}},
/** 已发货 */
DELIVERED {public String getName(){return "已发货";}},
/** 已收货 */
RECEIVED {public String getName(){return "已收货";}};
public abstract String getName();
}
3.遍历
枚举遍历常用方式:1.switch对单个枚举类型进行判断 2.for整体循环遍历
Gender flag = Gender.MAN;
switch (flag) {
case MAN:
System.out.println(flag.getName() + "----------" + flag.getValue() + "-----------" + flag.ordinal());
break;
case WOMEN:
System.out.println(flag.getName() + "----------" + flag.getValue() + "-----------" + flag.ordinal());
break;
default:
break;
}
//遍历枚举
for(Gender g : Gender.values()) {
System.out.println(g.getName() + "----------" + g.getValue() + "-----------" + g.ordinal());
}