黑马程序员_枚举

来源:互联网 发布:英文阅读软件 编辑:程序博客网 时间:2024/06/05 16:41

------- android培训java培训、期待与您交流! ----------

枚举

枚举它定义用唯一标识符表示一组常量。与类一样。所有enum类型都是引用类型。enum类型用enum声明定义。enum声明是用逗号分隔的enum常量列表,声明中还可以包含传统类的其他成分,比如构造方法,字段和方法。每个enum声明定义一个enum类,具有如下限制:

1.enum类型隐含为final,因为它声明的是常量,不能修改。

2.enum常量隐含为静态的。

3.如果试图用new运算符创建enum类型的对象,会导致编译错误。

能够使用常量的任何地方,都可以使用enum常量,比如switch语句的分支标签或强化for语句中。


枚举中的一些方法:

String toString()  返回常量名

int ordinal() 返回枚举常量在enum声明中的位置,位置从0开始计数。

String name() 返回此枚举常量的名称,在其枚举声明中对其进行声明。

静态valueOf(String args0) 返回带指定名称的的枚举常量。



下面是用普通类来模拟一个枚举类。

//普通类模拟枚举public abstract class WeekDay0{private WeekDay0(){}//每一个元素都是静态常量,只做演示public static final WeekDay0 SUN = new WeekDay0(){public WeekDay0 nextDay(){return MON;}};public static final WeekDay0 MON = new WeekDay0(){public WeekDay0 nextDay(){return SUN;}};public abstract WeekDay0 nextDay();public String toString(){return this==SUN?"SUN":"MON";}}

下面定义一个真正的枚举类:

public enum Book{//元素列表必须位于其他元素之前Java("Java程序语言","2010"),C("C程序设计语言","2011"),Python("Python指导","2012");public String getTitle(){return title;}public String getYear(){return year;}private final String title;private final String year;Book(String title, String year){this.title = title;this.year = year;}}public class EnumTest{public static void main(String[] args){System.out.println("All books:\n");for(Book book : Book.values()){System.out.printf("%-10s%-45s%s\n", book,book.getTitle(), book.getYear());}}}



另外一个例子:

public enum TrafficLamp{//每一个枚举元素都是一个对象//匿名子类调用父类有参构造方法,默认不写圆括号就是调用无参构造函数。RED(30){//匿名子类实现抽象方法public TrafficLamp nextLamp(){return GREEN;}},GREEN(45){//匿名子类实现抽象方法public TrafficLamp nextLamp(){return YELLOW;}},YELLOW(5){//匿名子类实现抽象方法public TrafficLamp nextLamp(){return RED;}};public abstract TrafficLamp nextLamp();public int time;private TrafficLamp(int time){this.time = time;}}



------- android培训java培训、期待与您交流! ----------

原创粉丝点击