java枚举

来源:互联网 发布:java一般放在哪里 编辑:程序博客网 时间:2024/05/16 23:42

1什么是枚举

先说什么是枚举之前,先了解一下单例模式,单例模式是什么呢,就是一个类只有一个实例对象。意味着你在任何时候要获得一个单例模式的类,所获得的对象都是相同的,那么单例模式如何实现呢?
单例模式的实现思想是这样的,你把一个类的构造方法声明为私有,然后在引用工厂模式,也就是通过类方法的形式把类的实例传递出去。
public class Single{    private Single(){    }    private static Single single;    public static Single getSingle(){        if(single==null){            single=new Single();        }        return single;    }}
好了这就是单例模式,然而并没有什么卵用。那么什么是枚举呢,枚举就是一个只有有限个实例。例如,一个星期只有7天。
public class Week{    public static Week MON=new Week();    public static Week TUE=new Week();    public static Week WED=new Week();    private Week(){    }}

枚举类的变形

上面的那个枚举类是最简单的,下面再介绍两种变形。
有参构造函数
public class Week2{    public static Week2 MON=new Week2("星期一");    public static Week2 TUE=new Week2("星期二");    public static Week2 WED=new Week2("星期三");    private String str;    private Week2(String str){        this.str=str;    }}
抽象方法,匿名内部类
这里public abstract class Week3{    public static Week3 MON=new Week3("星期一"){        public void show(){            System.out.println(str);        }    };    public static Week3 TUE=new Week3("星期二"){        public void show(){            System.out.println(str);        }    };    public static Week3 WED=new Week3("星期三"){        public void show(){            System.out.println(str);        }    };    String str;    private Week3(String str){        this.str=str;    }    public abstract void show();}

枚举的官方关键字enum

通过enum将一个java类声明为枚举类型
以下为enum对应的枚举的三种实现
public enum EnuWeek {    MON,TUE,WED;}
public enum EnumWeek2 {    MON("星期一"),TUE("星期二"),WED("星期三");    private String str;    private EnumWeek2(String str){        this.str=str;    }}
public enum EnumWeek3 {    MON(){        public void show(){        }    },    TUE(){        public void show(){        }    },    WED(){        public void show(){        }    };    public abstract void show();}
0 0
原创粉丝点击