列举类综合应用

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

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