基于java枚举类综合应用的说明

时间:2021-05-19

如下面代码以交灯为示例:
复制代码 代码如下:
public class Test {

public static void main(String[] args) {
Trafficlight light = Trafficlight.RED;

System.out.println(light.time);
System.out.println(light.nextLigth());
// ordinal()方法返回枚举声明的顺序
System.out.println(light.ordinal());
// values()方法得到所有枚举类型的一个数组
for(Trafficlight light1:light.values()){
System.out.println(light1.name());
}

// valueOf()方法可以把字符串转换成相应的枚举对象
System.out.println(light.RED ==light.valueOf("RED"));
}

public enum Trafficlight {
GREEN(30) {

@Override
public Trafficlight nextLigth() {
return RED;
}
},
RED(30) {

@Override
public Trafficlight nextLigth() {
return YELLOW;
}
},
YELLOW(10) {

@Override
public Trafficlight nextLigth() {
return GREEN;
}
};
public abstract Trafficlight nextLigth();

private int time;

// 构造方法
private Trafficlight(int time) {
this.time = time;
}

public int getTime(){
return time;
}

}

}

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

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

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章