---------------------- <a >asp.net+Unity開發</a>、<a >.Net培訓</a>、期待與您交流! ----------------------一.枚舉的概念 關于枚舉的概念,我們可以先提一個問題,對于一切都是類一切都是對象的java語言來說,枚舉是不是類? enum除了不能繼承之外,可以定義構造器,有正常的方法,甚至是抽象方法,因此基本上可以將enum看做一個常規的類。既然可以把它看作是一個常規的類,我們不妨寫一個類模擬枚舉。 本文的案例場景:以我們邁勝(mison)的企業理念以及各個崗位的工作職責為例:public class Misoner { PRivate Misoner() {} //講師 public static final Misoner TECHNICAL_ADVISER = new Misoner(); //就業指導 public static final Misoner EMPLOYMENT_GUIDE = new Misoner(); //軟件外包 public static final Misoner SOFTWARE_DEVELOPMENT = new Misoner(); //咨詢中心 public static final Misoner CONSULTING_CENTER = new Misoner();}復制代碼這個類跟其他類不一樣的地方便是構造器是private的以及對象都是以常量的形式出現,為什么要這么定義?從枚舉無法實例化以及通過枚舉直接訪問元素這兩點考慮就不難理解了。接下來我們來看一下上述代碼通過枚舉怎么實現:public enum MisonerEnum{ // 講師,就業指導中心,軟件外包中心,咨詢中心 TECHNICAL_ADVISER, EMPLOYMENT_GUIDE, SOFTWARE_DEVELOPMENT, CONSULTING_CENTER;}復制代碼通過枚舉實現的代碼就簡潔很多了。接下來再提兩個問題:1.枚舉的構造器怎么調用?2.枚舉的抽象方法如何實現?先看第1個問題:package complex;public class Misoner { private Misoner(String position) { System.out.println("崗位:" + position); } public static final Misoner TECHNICAL_ADVISER = new Misoner("技術總監"); public static final Misoner EMPLOYMENT_GUIDE = new Misoner("就業指導"); public static final Misoner SOFTWARE_DEVELOPMENT = new Misoner("項目經理"); public static final Misoner CONSULTING_CENTER = new Misoner("咨詢顧問"); }復制代碼上面的代碼耳熟能詳,很容易理解,枚舉又如何實現以上代碼,如下:package complex;public enum MisonerEnum { TECHNICAL_ADVISER("技術總監"), EMPLOYMENT_GUIDE("就業指導"), SOFTWARE_DEVELOPMENT( "項目經理"), CONSULTING_CENTER("咨詢顧問"); private MisonerEnum(String position) { System.out.println("崗位:" + position); }}復制代碼接下來是第2個問題,同樣的,我們通過模擬的枚舉類和枚舉進行比較:package complex;public abstract class Misoner { private Misoner(String position) { System.out.println("崗位:" + position); } // 定義內部類對象 public static final Misoner TECHNICAL_ADVISER = new Misoner("技術總監") { public void work() { System.out.println("講師提供一流的JAVA技術培訓"); } }; public static final Misoner EMPLOYMENT_GUIDE = new Misoner("就業指導") { public void work() { System.out.println("就業指導中心幫助學員實現高薪就業"); } }; public static final Misoner SOFTWARE_DEVELOPMENT = new Misoner("項目經理") { public void work() { System.out.println("軟件外包中心為學員提供商業外包帶薪實戰"); } }; public static final Misoner CONSULTING_CENTER = new Misoner("咨詢顧問") { public void work() { System.out.println("咨詢中心為學員提供生活學習上的一切服務"); } }; //定義抽象方法 public abstract void work();}復制代碼而使用enum的代碼如下:package complex;public enum MisonerEnum { TECHNICAL_ADVISER("技術總監") { public void work() { System.out.println("講師提供一流的JAVA技術培訓"); } }, EMPLOYMENT_GUIDE("就業指導") { public void work() { System.out.println("就業指導中心幫助學員實現高薪就業"); } }, SOFTWARE_DEVELOPMENT("項目經理") { public void work() { System.out.println("軟件外包中心為學員提供商業外包帶薪實戰"); } }, CONSULTING_CENTER("咨詢顧問") { public void work() { System.out.println("咨詢中心為學員提供生活學習上的一切服務"); } }; private MisonerEnum(String position) { System.out.println("崗位:" + position); } public abstract void work();}---------------------- <a >ASP.Net+Unity開發</a>、<a >.Net培訓</a>、期待與您交流! ----------------------
新聞熱點
疑難解答