黑马程序员技术交流社区

标题: 枚举 [打印本页]

作者: zhxu188    时间: 2014-9-9 11:03
标题: 枚举
枚举:关键字 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());                        }}

作者: The_king丶    时间: 2014-9-9 11:17
朋友,如果把代码放到代码栏那里会比较工整哦!
作者: 648947721    时间: 2014-9-13 00:15
学习学习
作者: 雪碧拌米饭    时间: 2014-9-13 01:38
这要怎么看啊大哥?
作者: 1169646761    时间: 2014-9-13 01:48
不错啊!
作者: 磊弟哥哥    时间: 2014-9-13 07:17
看了枚举了,你说的很对




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2