A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yangjijin 中级黑马   /  2014-7-1 10:14  /  758 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


关键字 enum
枚举就是要让某个类型的变量的取值只能为若干固定值之中的一个。
是一个特殊的类,其中的每一个元素都是该类的一个对象。

注意 : 因为不能New 枚举的实力,所以枚举不能继承其他类,也不能被其他类继承。

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

    用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能。
    1、私有的构造方法。
    2、每个元素分别用一个公有的静态成员变量表示。
     可以有若干公有方法或抽象方法。采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类
enum TrafficLamp{
        /**
         * 对于这道题目而言,使用的其实是匿名对象内部类!
         * 枚举最简单的创建对象方法:RED,YELLOW,GREEN
         * 对于普通的类而言,创建对象:Person p = new Person();
         *
         */
       
        RED(30){

                @Override
                public TrafficLamp nextLamp() {
                        return YELLOW;
                }
               
        },
       
        YELLOW(40){

                @Override
                public TrafficLamp nextLamp() {
                        return GREEN;
                }
               
        },
       
        GREEN(45){

                @Override
                public TrafficLamp nextLamp() {
                        return RED;
                }
               
        };
        public abstract TrafficLamp nextLamp();
        private int time;
        private TrafficLamp(int time){
                this.time = time;
        }
        public int getTime() {
                return time;
        }
        public void setTime(int time) {
                this.time = time;
        }
       
}

public class EnumDemo4 {
        public static void main(String[] args) {
                System.out.println(TrafficLamp.RED.nextLamp());
                System.out.println(TrafficLamp.RED.nextLamp().getTime());
               
        }
}

1 个回复

倒序浏览
请登录你的报名系统,查看审批结果!希望你会继续坚持写学习日记的习惯,一个知识点,如果有代码,有注释,有自己的总结,复习的时候会事半功倍,好的习惯,坚持!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马