一、枚举类的特征:
只有私有的构造器;
属性个数有限且为final;
父类为java.lang.Enum;
public class Test {
public static void main(String[] args) {
System.out.println(MsgFlag5.class.getSuperclass().getName());
}
}
enum MsgFlag5 {
OUT,
IN;
}
结果:
二、通过class关键字创建枚举类
public class MsgFlag2 {
private final String PocNM;
private final String MyNM;
private final String description;
private MsgFlag2(String PocNM,String MyNM,String description){
this.PocNM = PocNM;
this.MyNM = MyNM;
this.description = description;
}
public final static MsgFlag2 OUT = new MsgFlag2("OUT","1","往账");
public final static MsgFlag2 IN = new MsgFlag2("IN","2","来账");
public String getPocNM() {
return PocNM;
}
public String getMyNM() {
return MyNM;
}
public String getDescription() {
return description;
}
}
//测试
class Test5{
public static void main(String[] args) {
MsgFlag2.OUT.getMyNM();
}
}
三、通过enum关键字创建枚举类
public enum MsgFlag {
OUT("OUT","1","往账"),
IN("IN","2","来账");
private final String PocNM;
private final String MyNM;
private final String description;
private MsgFlag(String PocNM,String MyNM,String description){
this.PocNM = PocNM;
this.MyNM = MyNM;
this.description = description;
}
public String getPocNM() {
return PocNM;
}
public String getMyNM() {
return MyNM;
}
public String getDescription() {
return description;
}
}
四、两种创建方式比较
通过两种创建方式比较可以看出,enum方式省去了大量的代码编写,只保留自身常量型实例名称,简洁且直观;
五、枚举类的父类方法
1、static Enum valueOf(String):根据枚举名称获取枚举实例;
2、static Enum[] values():获取所有枚举实例,返回数组;
public class Test2 {
public static void main(String[] args) {
System.out.println(MsgFlag5.valueOf("OUT").getName());
MsgFlag5[] msgFlag5s = MsgFlag5.values();
for(MsgFlag5 msgFlag5:msgFlag5s){
System.out.println("枚举的name值:"+msgFlag5.getName());
}
}
}
enum MsgFlag5{
OUT("1"),
IN("2");
private String name;
MsgFlag5(String name) {
this.name = name;
}
public String getName(){
return name;
}
}
结果:
六、枚举的应用举例
控制pojo的取值范围:
class Msg{
public MsgFlag nams;
public void setNams(MsgFlag nams) {
this.nams = nams;
}
}
class Test5{
public static void main(String[] args) {
Msg msg = new Msg();
msg.setNams(MsgFlag.OUT);
}
}