枚举类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了枚举类相关的知识,希望对你有一定的参考价值。

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 }

 

以上是关于枚举类的主要内容,如果未能解决你的问题,请参考以下文章

同名的类函数宏和枚举器

带有红宝石集合/可枚举的酷技巧和富有表现力的片段[关闭]

JAVA枚举小结

如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用

php 枚举类代替hard code代码

php 枚举类代替hard code代码