黑马程序员技术交流社区

标题: 枚举类的问题 [打印本页]

作者: tshch1989    时间: 2013-5-24 22:53
标题: 枚举类的问题
public class EnumTest1 {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                for(TrafficLight tl:TrafficLight.values()){
                        System.out.println(tl.toString()+"..."+tl.nextLight());
                }
        }
}
enum TrafficLight{
        RED(30) {
                @Override
                public TrafficLight nextLight() {
                        // TODO Auto-generated method stub
                        return GREEN;
                }
        },GREEN(40) {
                @Override
                public TrafficLight nextLight() {
                        // TODO Auto-generated method stub
                        return YELLOW;
                }
        },YELLOW(5) {
                @Override
                public TrafficLight nextLight() {
                        // TODO Auto-generated method stub
                        return RED;
                }
        };
        abstract public TrafficLight nextLight();
        private int time;
        private TrafficLight(int time){
                this.time=time;
        }
}
枚举在定义的时候使用关键字enum,感觉和类很相似啊!这其中是不是有什么联系?明白的同学给讲解下吧
作者: 胡浩    时间: 2013-5-24 23:25
其实枚举是独立于类存在的。它的主要作用是可以限制用户的输入,比如性别,只可以输入男和女。枚举中的元素都有一个下标,默认是从1开始的。
作者: 杨彬    时间: 2013-5-25 00:39
枚举,是让某个类型变量的取值只能为若干固定值中的一个否则编译器就会报错。enum很像class,但他是特殊的class,实际上enum声明定义的类型就是一个类,而这些类都是类库中Enum类的子类,它们继承了这个Enum中的许多有用的方法。
以前没有枚举类的时候我们通过,私有的构造函数,每个元素用公有的静态成员变量表示并且调用私有构造函数来达到效果,有了枚举就方便了
final class Season  
  {public static final Season SPRING=new Season();  
    public static final Season WINTER=new Season();  
    public static final Season SUMMER=new Season();  
    public static final Season AUTUMN=new Season();  
    private Season(){...}  
  }  




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