1. 程式人生 > >Java中列舉類的定義以及使用

Java中列舉類的定義以及使用

 


 看到這個標題,很多人不禁要問---什麼是列舉類而且為什麼用列舉類呢?那是因為,一些方法在執行時,它需要的資料不能是任意的,而必須是一定範圍內的值,此類問題在JDK5以前採用自定義帶有列舉功能的類解決,Java5以後可以直接使用列舉予以解決。

    舉個簡單的例子,我們每個人都有性別,分為“男”和“女”兩種,為了限定這兩種情況我們就必須限定這兩種情況。下面就請大家看看怎樣幾種手動的實現列舉的方法:

    Person類:

 
  1. //手動實現列舉

  2. public class Person {

  3. private String sex;

  4.  
  5. //利用正則表示式來限制

  6. public void setSex(String sex) {

  7. if(sex.matches("[男女]")){

  8. System.out.println("此性別可以識別!");

  9. }else{

  10. System.out.println("此性別不可識別!");

  11. //throw new RuntimeException("此性別不可識別!");

  12. }

  13. }

  14.  
  15. public String toString() {

  16. return "Person [sex=" + sex + "]";

  17. }

  18.  
  19. }


   測試類:

 
  1. import domain.Person;

  2.  
  3. public class PersonTest {

  4. public static void main(String[] args) {

  5. Person p=new Person();

  6. p.setSex("人妖");

  7. System.out.println(p.toString());

  8. }

  9. }

  輸出效果:

 

 

 

   手動實現列舉類:

          通過private 將構造器隱藏起來

          把這個類的所有可能例項都使用public static final 修飾

          屬性不應允許被改動, 所以應該使用 private final 修飾

   Sex類:

 
  1. public class Sex {

  2. // 性別男

  3. public static final Sex m = new Sex("男");

  4. // 性別女

  5. public static final Sex f = new Sex("女");

  6. private final String value;

  7.  
  8. private Sex(String value) {

  9. this.value = value;

  10. }

  11.  
  12. // 讓外界訪問所定義的性別

  13. public String getValue() {

  14. return value;

  15. }

  16. }

  測試類:

 
  1. public class Sex {

  2. // 性別男

  3. public static final Sex m = new Sex("男");

  4. // 性別女

  5. public static final Sex f = new Sex("女");

  6. private final String value;

  7.  
  8. private Sex(String value) {

  9. this.value = value;

  10. }

  11.  
  12. // 讓外界訪問所定義的性別

  13. public String getValue() {

  14. return value;

  15. }

  16. }


  輸出效果: