基于java枚举类综合应用的说明
程序员文章站
2023-12-16 12:12:28
如下面代码以交灯为示例:复制代码 代码如下:public class test { public static void m...
如下面代码以交灯为示例:
复制代码 代码如下:
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)方法可以将字符串转换成一个枚举。