首页 > 新闻动态 >  

新闻动态
NEWS

列举类综合应用

添加时间:2013-5-6 点击量:

一个列举类,可以算作包含它的一些子类(列举)的一个类,并且列举类的机关办法只能是私有的,如下面代码以交灯为示例:



 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)办法可以将字符串转换成一个列举。

无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》
分享到: