枚举类

1  枚举的需求范围

  一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值

  比如: 方向 , 性别 、 季节 、 星期......

2  枚举类的定义格式:

    enum 类名{
      //枚举值
    }

3  枚举要注意的细节:

   1. 枚举类也是一个特殊的类。

     将枚举类编译,会存在以 .class 为后缀的文件


  2. 枚举值默认的修饰符是public static final。

     假如我自定义一个性别枚举类     

enum Sex{
    man,woman;
}

     那么其中的 man 其实相当于 public static final Sex man = new Sex();


  3. 枚举值就是枚举值所属的类的类型,枚举值是指向了本类的对象的。

    参考2


  4. 枚举类的构造方法默认的修饰符是private的。    

enum Sex{
    man,woman;
    
    private Sex(){
        
    }
}

  5. 枚举类可以定义自己的成员变量与成员函数。   

 1 enum Sex{
 2     man,woman;
 3     
 4     private Sex(){
 5         
 6     }
 7     
 8     String value;//成员变量
 9     public void getValue(){
10         System.out.println("value: " + value);
11     }
12 }

  6. 枚举类自定义带参构造函数时,枚举值需要传参。   

 1 enum Sex{
 2     man("男"),woman("女");
 3     
 4     private Sex(String value){
 5         this.value = value;
 6     }
 7     
 8     String value;//成员变量
 9     public void getValue(){
10         System.out.println("value: " + value);
11     }
12 }

  7. 枚举类可以存在抽象的方法,但是枚举值必须要实现抽象的方法。    

 1 enum Sex{
 2     man("男"){
 3 
 4         @Override
 5         public void run() {
 6             System.out.println("男人再跑!");
 7         }
 8         
 9     },woman("女"){
10         @Override
11         public void run() {
12             System.out.println("女人再跑!");
13         }
14     };
15     
16     public abstract void run();
17       
18 //    private Sex(String value){
19 //        this.value = value;
20 //    }
21 //    
22 //    String value;//成员变量
23 //    
24 //    public void getValue(){
25 //        System.out.println("value: " + value);
26 //    }
27    
28 }

  8. 枚举值必须要位于枚举类的第一个语句。

注意: JDK1.5才有枚举的哦

完整代码

 1 enum Sex{
 2     man("男"){
 3 
 4         @Override
 5         public void run() {
 6             System.out.println("男人再跑!");
 7         }
 8         
 9     },woman("女"){
10         @Override
11         public void run() {
12             System.out.println("女人再跑!");
13         }
14     };
15     
16     public abstract void run();
17       
18     private Sex(String value){
19         this.value = value;
20     }
21     
22     String value;//成员变量
23     
24     public void getValue(){
25         System.out.println("value: " + value);
26     }
27    
28 }
29 
30 public class Demo4 {
31     public static void main(String[] args) {
32         Sex sex = Sex.man; //获取到了枚举类的对象
33         sex.getValue();
34         
35         sex.run();
36     }
37 }
原文地址:https://www.cnblogs.com/shadowdoor/p/6915091.html