05.22枚举

一、枚举

1.1 为什么需要枚举

问题:要定义星期几或性别的变量,该怎么定义?個假设用1-7分别表示星期一到星期日,但有人可能会写成 int weekday=0

>枚举就是要让某个类型的变量的取值只能为若千个固定值中的一个,否则编译普遍就会报错。校举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。


1.2 java5的枚举的基本应用

图片发自简书App


name 方法返回枚举对象的名称。自己实现了 toString方法。

ordinal()方法枚举对象的位置信息。从0开始

valueOf() 返回对应的枚举对象。

values() 返回一个枚举数组,将该枚举的所有对象都返回。这样就能够遍历enum实例。

在创建enum时,编译器会自动生成一个相关类,这个类继承java.lang.Enum

1.3 实现带有构造方法的枚举

图片发自简书App


元素列表必须位于其他元素之前。且用分号隔开。

且枚举类的构造方法必须是private的。如果不写也默认是private.

在枚举类后面使用()传入指定参数来指定需要调用那个构造方法。 其中空()表示默认构造方法。

1.4 实现带有抽象方法的枚举

内部类可以加访问修饰符。而外部类则只能是默认和public

代码://带有抽象方法的枚举

import java.util.Date;

public class EnumTest {

    public static void main(String[] args) {

}

    public enum WeekDay{

        SUN(1),MON(),TUE,WED,THI,FRI,SAT;

        private WeekDay(){System.out.println("first");}

        private WeekDay(int day){System.out.println("second");}

    }

    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();

        private int time;

        private TrafficLamp(int time){this.time = time;}

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容