黑马程序员20——高新枚举

来源:互联网 发布:网络限制怎么解决 编辑:程序博客网 时间:2024/06/05 20:09

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

枚举

枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象。

特点:

       1.枚举是Java5.0引入的新特性,枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。

       2.枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。

       3.把枚举中的成员方法或变量等放在枚举元素的前面,编译器报告错误。

枚举的定义格式:
    权限修饰符  enum 枚举名称{
    值1,值2,值3,值4,值5;
    }
    例如:  public enum Color{
        RED,BLUE,BLACK,YELLOW,GREEN;
        }

注意:

1.枚举可以带构造方,构造方法必须定义成私有,枚举只有一个成员时,就可以作为一种单例的实现方式。

2.要定义星期几或性别的变量,假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;或即使使用常量方式也无法阻止意外。枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。

package com.shechuan.enumclass;public class EnumClass {public static void main(String[] args) {WeekDay weekDay = WeekDay.MONDAY;System.out.println("用类模拟枚举:" + weekDay.nextWeekDay());AbstractWeekDay abstractWeekDay = AbstractWeekDay.FRIDAY;System.out.println("用抽象类模拟枚举:" + abstractWeekDay.nextWeekDay());System.out.println("+++++++++++++++++++++++++++++");EnumWeekDay enumWeekDay = EnumWeekDay.SUN;// 在这里调用所有的构造函数System.out.println();System.out.println("枚举:" + enumWeekDay);System.out.println("该枚举中的名字:" + enumWeekDay.name());System.out.println("该枚举中的序号:" + enumWeekDay.ordinal());System.out.println("前端传来的字符串转化成枚举:" + EnumWeekDay.valueOf("SUN"));System.out.println("返回枚举中的每个元素组成的数组:(这里求数组的长度)"+ EnumWeekDay.values().length);}public enum EnumWeekDay {SUN, MON, TUE, WED, THU, FIR(), SAT(1);private EnumWeekDay() {System.out.println("无参构造方法");}private EnumWeekDay(int a) {System.out.println("星期六的构造方法");}}public enum TrafficLamp {//类似于匿名内部类GREEN(45){public TrafficLamp nextTrafficLamp(){return YELLOW;}}, YELLOW(5){public TrafficLamp nextTrafficLamp(){return RED;}}, RED(50){public TrafficLamp nextTrafficLamp(){return GREEN;}};int time;private TrafficLamp() {}private TrafficLamp(int time) {this.time = time;}public abstract TrafficLamp nextTrafficLamp();}/* * 枚举只有一个成员时,可以实现单例 */}

0 0
原创粉丝点击