好久沒有接觸枚舉類了,差不多都忘了,今天抽出個時間總結一下吧。說實話,枚舉類確實能夠給我們帶來很大的方便。
說明:枚舉類它約定了一個范圍,可以理解成只可以生成固定的幾個對象讓外界去調用,故枚舉類中的構造方法都是PRivate類型的。進而求其次,究竟枚舉類到底有何特殊之處呢?
呈上代碼一覽(本人也是java Android 領域的菜鳥,如有錯誤之處,希望大家能夠給以指點)
1 /** 2 * 測試枚舉類 3 * @author Administrator 4 * @Date 2015-8-3 5 */ 6 public class EnumTest { 7 public static void main(String[] args) { 8 Person person1 = Person.MAN; 9 System.out.println(person1);10 Person.MAN.work();11 Person.WOMEN.work();12 13 }14 //測試Person的values()方法15 public static void testValues(){16 Person []persons = Person.values();17 for(Person p:persons){18 19 System.out.println(p);20 21 }22 23 }24 //測試Person的valuesof()方法25 public static void testValuesOf(){26 Person person2 = Person.valueOf("MAN");27 System.out.println(person2);28 }29 }30 /**31 * 測試接口32 * @author Administrator33 * @Date 2015-8-334 */35 interface PersonExtends{36 void work();37 }38 /**39 * 枚舉類40 * @author Administrator41 * @Date 2015-8-342 */43 enum Person implements PersonExtends{44 MAN("zhangsan","12"){45 public void work(){46 System.out.println("能干體力活,承受得住重量");47 }48 49 },WOMEN("lisi","13"){50 public void work(){51 52 System.out.println("職場白領居多,能者居之");53 }54 };55 private String name;56 private String age;57 private Person(String name,String age){58 this.name = name;59 this.age = age;60 }61 public String getName() {62 return name;63 }64 public void setName(String name) {65 this.name = name;66 }67 public String getAge() {68 return age;69 }70 public void setAge(String age) {71 this.age = age;72 }73 public void method(){74 System.out.println("The person is liming");75 }76 @Override77 public String toString() {78 // TODO Auto-generated method stub79 return super.toString();80 }81 @Override82 public void work() {83 // TODO Auto-generated method stub84 System.out.println("男人和女人工作的強度不同");85 }86 87 }說明一下我以上代碼的幾個關鍵的因素:
1.以前不太明白枚舉類中一開始的對象如何去寫,其實很簡單,只是原始類的縮寫而已。看如下代碼:
private final Person2 MAN = new Person2("zhangsan","12");其實枚舉類中的對象和這個寫法是一樣的,只不過在enum聲明的類中不能夠這么寫。可以這樣理解,既然枚舉類已經限定了范圍,只能在枚舉類中new對象,故構造方法是private類型,外界也不允許修改,故它就是不變的,所以聲明成為final類型,對象初始化,這點相信大家都知道的。然而在enum中,已經知道這種約定,所以enum類中不允許這樣寫,把默認的都刪掉,有點類似接口中的final static 。所以就剩下MAN("zhangsan","12")。強調一點,枚舉對象必須寫在類的開頭。
2.在測試枚舉類中,引用枚舉類的對象相信大家一看就能明白。還有兩個方法說明一下,一是values方法,取得枚舉類中定義的枚舉類的對象,返回的是一個枚舉類的集合。如上依次遍歷。。。其次是valuesof方法,根據名字獲取枚舉類型的對象,強調一下,valuesof(String str)中的參數必須是枚舉類中對象的名字,否則將會報異常。
今天有點晚了。。明天再做更新啦。。
新聞熱點
疑難解答