分享

Java枚举类

 nisz 2016-06-24

1.枚举类入门

Java枚举类是从Java5开始支持的。

枚举类的构造方法是用private修饰的。枚举类的所有实例必须在类的第一行列出,否则这个枚举类不会产生对象。

而且这些实例都是public static void.

每个枚举类都有一个values方法,该方法可以遍历枚举类的所有实例

[java] view plain copy

  1. public class Test {  

  2.       

  3.       

  4.     public static void tell(Season s)  

  5.     {  

  6.         switch(s)  

  7.         {  

  8.         case Spring:  

  9.             System.out.println(s+'春天');  

  10.             break;  

  11.         case Summer:System.out.println(s+'夏天');  

  12.             break;  

  13.         case Fall:System.out.println(s+'秋天');  

  14.             break;  

  15.         case Winter:System.out.println(s+'冬天');  

  16.             break;  

  17.         }  

  18.           

  19.     }  

  20.       

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

  22.           

  23.         for(Season s:Season.values())  

  24.         {  

  25.             System.out.println(s);  

  26.         }  

  27.         tell(Season.Fall);  

  28.   

  29.     }  

  30.   

  31. }  

  32.   

  33. enum Season  

  34. {  

  35.     Spring,Summer,Fall,Winter;  

  36. }  


2.枚举类的构造方法和对象

枚举类的构造方法是private,所以不能使用new创建对象

可以使用Enum.valueOf(Class c,String s);创建对象

[java] view plain copy

  1. public class Test {  

  2.       

  3.       

  4.       

  5.           

  6.       

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

  8.           

  9.         Season s=Enum.valueOf(Season.class'Summer');  

  10.         System.out.println(s);  

  11.   

  12.     }  

  13.   

  14. }  

  15.   

  16. enum Season  

  17. {  

  18.     Spring,Summer,Fall,Winter;  

  19. }  

一旦为枚举类定义了带参数的构造方法后,列举枚举类就必须对应的传入参数

[java] view plain copy

  1. public class Test {  

  2.       

  3.       

  4.       

  5.           

  6.       

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

  8.           

  9.         Season s=Enum.valueOf(Season.class'Summer');  

  10.         System.out.println(s.name);  

  11.   

  12.     }  

  13.   

  14. }  

  15.   

  16. enum Season  

  17. {  

  18.     Spring('春天'),Summer('夏天'),Fall('秋天'),Winter('冬天');  

  19.     public String name;  

  20.     private Season(String name)  

  21.     {  

  22.         this.name=name;  

  23.     }  

  24. }  

 

3.枚举类实现接口

与普通类一样,枚举类实现接口,则必须实现接口中所有的方法

[java] view plain copy

  1. public class Test {  

  2.       

  3.       

  4.       

  5.           

  6.       

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

  8.           

  9.         Season s=Enum.valueOf(Season.class'Summer');  

  10.         System.out.println(s.name);  

  11.         s.printInfo();  

  12.   

  13.     }  

  14.   

  15. }  

  16.   

  17. enum Season implements Infomation  

  18. {  

  19.     Spring('春天'),Summer('夏天'),Fall('秋天'),Winter('冬天');  

  20.     public String name;  

  21.     private Season(String name)  

  22.     {  

  23.         this.name=name;  

  24.     }  

  25.     @Override  

  26.     public void printInfo() {  

  27.         System.out.println(name);  

  28.           

  29.     }  

  30. }  

  31. interface Infomation  

  32. {  

  33.     void printInfo();  

  34. }  


也可以使用匿名内部类的方法为每一个枚举类对象实现接口

[java] view plain copy

  1. public class Test {  

  2.       

  3.       

  4.       

  5.           

  6.       

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

  8.           

  9.         Season s=Enum.valueOf(Season.class'Summer');  

  10.         System.out.println(s.name);  

  11.         s.printInfo();  

  12.   

  13.     }  

  14.   

  15. }  

  16.   

  17. enum Season implements Infomation  

  18. {  

  19.     Spring('春天'){  

  20.   

  21.         @Override  

  22.         public void printInfo() {  

  23.             // TODO Auto-generated method stub  

  24.             System.out.println('春天温暖');  

  25.               

  26.         }  

  27.           

  28.     },Summer('夏天')  

  29.     {  

  30.   

  31.         @Override  

  32.         public void printInfo() {  

  33.             // TODO Auto-generated method stub  

  34.             System.out.println('夏天炎热');  

  35.         }  

  36.           

  37.     },Fall('秋天')  

  38.     {  

  39.   

  40.         @Override  

  41.         public void printInfo() {  

  42.             // TODO Auto-generated method stub  

  43.             System.out.println('秋天凉爽');  

  44.         }  

  45.           

  46.     },Winter('冬天'){  

  47.   

  48.         @Override  

  49.         public void printInfo() {  

  50.             // TODO Auto-generated method stub  

  51.             System.out.println('冬天寒冷');  

  52.         }  

  53.           

  54.     };  

  55.     public String name;  

  56.     private Season(String name)  

  57.     {  

  58.         this.name=name;  

  59.     }  

  60.       

  61. }  

  62. interface Infomation  

  63. {  

  64.     void printInfo();  

  65. }  


4.包含抽象方法的枚举类

包含抽象方法枚举类,要实例化对象的话,就得让每个对象实现抽象方法

[java] view plain copy

  1. public class Test {  

  2.       

  3.       

  4.       

  5.           

  6.       

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

  8.           

  9.         Season s=Enum.valueOf(Season.class'Summer');  

  10.         System.out.println(s.name);  

  11.         s.printInfo();  

  12.         s.whatToDo();  

  13.   

  14.     }  

  15.   

  16. }  

  17.   

  18. enum Season implements Infomation  

  19. {  

  20.     Spring('春天'){  

  21.   

  22.         @Override  

  23.         public void printInfo() {  

  24.             // TODO Auto-generated method stub  

  25.             System.out.println('春天温暖');  

  26.               

  27.         }  

  28.   

  29.         @Override  

  30.         public void whatToDo() {  

  31.             // TODO Auto-generated method stub  

  32.             System.out.println('我去春游');  

  33.               

  34.         }  

  35.           

  36.     },Summer('夏天')  

  37.     {  

  38.   

  39.         @Override  

  40.         public void printInfo() {  

  41.             // TODO Auto-generated method stub  

  42.             System.out.println('夏天炎热');  

  43.         }  

  44.   

  45.         @Override  

  46.         public void whatToDo() {  

  47.             // TODO Auto-generated method stub  

  48.             System.out.println('我去游泳');  

  49.         }  

  50.           

  51.     },Fall('秋天')  

  52.     {  

  53.   

  54.         @Override  

  55.         public void printInfo() {  

  56.             // TODO Auto-generated method stub  

  57.             System.out.println('秋天凉爽');  

  58.         }  

  59.   

  60.         @Override  

  61.         public void whatToDo() {  

  62.             // TODO Auto-generated method stub  

  63.             System.out.println('我去玩乒乓球');  

  64.         }  

  65.           

  66.     },Winter('冬天'){  

  67.   

  68.         @Override  

  69.         public void printInfo() {  

  70.             // TODO Auto-generated method stub  

  71.             System.out.println('冬天寒冷');  

  72.         }  

  73.   

  74.         @Override  

  75.         public void whatToDo() {  

  76.             // TODO Auto-generated method stub  

  77.             System.out.println('我去赏雪观梅');  

  78.         }  

  79.           

  80.     };  

  81.     public String name;  

  82.     private Season(String name)  

  83.     {  

  84.         this.name=name;  

  85.     }  

  86.     public abstract void whatToDo();  

  87.       

  88. }  

  89. interface Infomation  

  90. {  

  91.     void printInfo();  

  92. }  


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多