枚举类型是一种基本数据类型而不是构造数据类型,从jdk1.5才有的新类型,一般用来做全局常量。
特性:
1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例,可用来写单例模式。
2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。
3.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.
用法:
1:字符串常量(也是最简洁的单例模式):
//定义
public enum EnumKey{
MESSAGE_UPDATE,MESSAGE_DELETE,MESSAGE_ADD;
}
//使用
EnumKey.MESSAGE_ADD.toString();
2:整型常量
//定义
public enum EnumKey {
MESSAGE_UPDATE(1), MESSAGE_DELETE(2), MESSAGE_ADD(3);
public int tag;
EnumKey(int iTag) {
this.tag = iTag;
}
}
//使用
int i =EnumKey.MESSAGE_ADD.tag;
3:字符串常量(第二种表示方法)
//定义
public enum EnumKey {
MESSAGE_UPDATE("update"), MESSAGE_DELETE("delete"), MESSAGE_ADD("add");
public String msg;
EnumKey(String str) {
this.msg = str;
}
}
//使用
String s =EnumKey.MESSAGE_ADD.msg;
4:添加方法
//定义
public enum EnumKey {
MESSAGE_UPDATE("update", 1), MESSAGE_DELETE("delete", 2), MESSAGE_ADD("add", 3);
public String msg;
public int tag;
EnumKey(String str, int iTag) {
this.msg = str;
this.tag = iTag;
}
public static boolean getMax(int flag) {
return flag > 1 ? true : false;
}
}
//使用
EnumKey.MESSAGE_ADD.getMax(2);
小结:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiQ3chVEa0V3bT9CX5RXa2Fmcn9CXwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwlM0JjW1Z1RjZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DOxkzNzMDM1ETMxMDM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
'
发现什么了没? 枚举的每个实例所包含的参数和枚举的构造方法所包含的参数一致 于是你会发现,其实MESSAGE_UPDATE("update", 1)所代表的意思是EnumKey MESSAGE_UPDATE=new EnumKey("update", 1),即:
public class EnumKey {
public static String msg;
public static int tag;
public EnumKey(String str, int iTag) {
this.msg = str;
this.tag = iTag;
}
}
EnumKey MESSAGE_UPDATE=new EnumKey("update", 1);