黑马程序员技术交流社区

标题: 枚举如何创建自己的实例.在内存中如何实现的? [打印本页]

作者: 念满    时间: 2013-1-31 17:59
标题: 枚举如何创建自己的实例.在内存中如何实现的?
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;}
}
}
枚举如何创建自己的实例.在内存中如何实现的?
创建RED元素要用到GREEN,而创建GREEN要用到YELLOW,而创建YELLOW要用到RED,
一个元素没整完且要用到另外一个元素,内存中到底如何实现?

作者: 邝雄伟    时间: 2013-2-1 02:03
创建枚举类型要使用enum关键字,隐含了所创建的类型都是java.lang.Enum类的子类,它是抽象类。其中,枚举类型符合通用模式
Class Enum<E extends Enum<E>>
,而
E
表示枚举类型的名称。枚举类型的每一个值都将映射到
protected Enum(String name, int ordinal)
构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。

public enum Size{
        SMALL,
        MEDIUM,
        LARGE;
}

实际上调用了三次构造函数:

new Enum<Size>("SMALL",0);
new Enum<Size>("MEDIUM",1);
new Enum<Size>("LARGE",2);

值的名字和顺序值可以分别通过name()/toString()、ordinal()获得。






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