枚举类综合应用

一个枚举类,可以看成包括它的一些子类(枚举)的一个类,而且枚举类的构造方法只能是私有的,如下面代码以交灯为示例:

 1 public class Test {
 2 
 3     public static void main(String[] args) {
 4         Trafficlight light = Trafficlight.RED;
 5         
 6         System.out.println(light.time);
 7         System.out.println(light.nextLigth());
 8         // ordinal()方法返回枚举声明的顺序
 9         System.out.println(light.ordinal());
10         // values()方法得到所有枚举类型的一个数组
11         for(Trafficlight light1:light.values()){
12             System.out.println(light1.name());
13         }
14         
15         // valueOf()方法可以把字符串转换成相应的枚举对象
16         System.out.println(light.RED ==light.valueOf("RED"));
17     }
18 
19     public enum Trafficlight {
20         GREEN(30) {
21 
22             @Override
23             public Trafficlight nextLigth() {
24                 return RED;
25             }
26         },
27         RED(30) {
28 
29             @Override
30             public Trafficlight nextLigth() {
31                 return YELLOW;
32             }
33         },
34         YELLOW(10) {
35 
36             @Override
37             public Trafficlight nextLigth() {
38                 return GREEN;
39             }
40         };
41         public abstract Trafficlight nextLigth();
42 
43         private int time;
44 
45         // 构造方法
46         private Trafficlight(int time) {
47             this.time = time;
48         }
49         
50         public int getTime(){
51             return time;
52         }
53 
54     }
55 
56 }

代码中,可以看到GREEN,RED,YELLOW,分别是Trafficlight的一个子类,并作为它的成员变量。在Trafficlight有一个抽象方法nextLight(),在子类中是必须要实现的,所以@Override,另外它们也继承了父类的方法,所以可以调用父类的方法 getTiime(),由于父类Trafficlight中声明一个有参数的构造方法覆盖了无参的构造方法,所以构建子类时也必须要加上参数。

  代码中light只是相当于一个父类的实例,用它可以得到各个成员变量的子类,调用各种方法,valueOf(String)方法可以将字符串转换成一个枚举。

转载于:https://www.cnblogs.com/wn398/archive/2013/05/05/3061854.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值