基于java枚舉類綜合應(yīng)用的說明
更新時間:2013年05月06日 09:36:10 作者:
一個枚舉類,可以看成包括它的一些子類(枚舉)的一個類,而且枚舉類的構(gòu)造方法只能是私有的
如下面代碼以交燈為示例:
復(fù)制代碼 代碼如下:
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()方法得到所有枚舉類型的一個數(shù)組
for(Trafficlight light1:light.values()){
System.out.println(light1.name());
}
// valueOf()方法可以把字符串轉(zhuǎn)換成相應(yīng)的枚舉對象
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;
// 構(gòu)造方法
private Trafficlight(int time) {
this.time = time;
}
public int getTime(){
return time;
}
}
}
代碼中,可以看到GREEN,RED,YELLOW,分別是Trafficlight的一個子類,并作為它的成員變量。在Trafficlight有一個抽象方法nextLight(),在子類中是必須要實(shí)現(xiàn)的,所以@Override,另外它們也繼承了父類的方法,所以可以調(diào)用父類的方法 getTiime(),由于父類Trafficlight中聲明一個有參數(shù)的構(gòu)造方法覆蓋了無參的構(gòu)造方法,所以構(gòu)建子類時也必須要加上參數(shù)。
代碼中l(wèi)ight只是相當(dāng)于一個父類的實(shí)例,用它可以得到各個成員變量的子類,調(diào)用各種方法,valueOf(String)方法可以將字符串轉(zhuǎn)換成一個枚舉。
相關(guān)文章
解決mybatis plus字段為null或空字符串無法保存到數(shù)據(jù)庫的問題
這篇文章主要介紹了解決mybatis plus字段為null或空字符串無法保存到數(shù)據(jù)庫的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
玩轉(zhuǎn)spring boot 結(jié)合AngularJs和JDBC(4)
玩轉(zhuǎn)spring boot,這篇文章主要介紹了結(jié)合AngularJs和JDBC,玩轉(zhuǎn)spring boot,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
Spring Cloud Gateway重試機(jī)制原理解析
這篇文章主要介紹了Spring Cloud Gateway重試機(jī)制原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08
Spring Boot結(jié)合IDEA自帶Maven插件如何快速切換profile
IDEA是目前 Java 開發(fā)者中使用最多的開發(fā)工具,它有著簡約的設(shè)計(jì)風(fēng)格,強(qiáng)大的集成工具,便利的快捷鍵,這篇文章主要介紹了Spring Boot結(jié)合IDEA自帶Maven插件快速切換profile,需要的朋友可以參考下2023-03-03

