枚舉ENUM的tostring() valueof()name()和values()用法


從jdk5出現了枚舉類后,定義一些字典值可以使用枚舉類型;

枚舉常用的方法是values():對枚舉中的常量值進行遍歷;

valueof(String name) :根據名稱獲取枚舉類中定義的常量值;要求字符串跟枚舉的常量名必須一致;

獲取枚舉類中的常量的名稱使用枚舉對象.name()

枚舉類中重寫了toString()方法,返回的是枚舉常量的名稱;

其實toString()和value是相反的一對操作。valueOf是通過名稱獲取枚舉常量對象。而toString()是通過枚舉常量獲取枚舉常量的名稱;

 

 1 package enumTest;
 2 
 3 /**
 4  * author:THINK
 5  * version: 2018/7/16.
 6  */
 7 public enum Color {
 8 
 9     RED(0,"紅色"),
10     BLUE(1,"藍色"),
11     GREEN(2,"綠色"),
12 
13     ;
14 
15 //    可以看出這在枚舉類型里定義變量和方法和在普通類里面定義方法和變量沒有什么區別。唯一要注意的只是變量和方法定義必須放在所有枚舉值定義的后面,否則編譯器會給出一個錯誤。
16     private int code;
17     private String desc;
18 
19     Color(int code, String desc) {
20         this.code = code;
21         this.desc = desc;
22     }
23 
24     /**
25      * 自己定義一個靜態方法,通過code返回枚舉常量對象
26      * @param code
27      * @return
28      */
29     public static Color getValue(int code){
30 
31         for (Color  color: values()) {
32             if(color.getCode() == code){
33                 return  color;
34             }
35         }
36         return null;
37 
38     }
39 
40 
41     public int getCode() {
42         return code;
43     }
44 
45     public void setCode(int code) {
46         this.code = code;
47     }
48 
49     public String getDesc() {
50         return desc;
51     }
52 
53     public void setDesc(String desc) {
54         this.desc = desc;
55     }
56 }

測試類

 1 package enumTest;
 2 
 3 /**
 4  * author:THINK
 5  * version: 2018/7/16.
 6  */
 7 public class EnumTest {
 8     public static void main(String[] args){
 9         /**
10          * 測試枚舉的values()
11          *
12          */
13         String s = Color.getValue(0).getDesc();
14         System.out.println("獲取的值為:"+ s);
15 
16 
17 
18         /**
19          * 測試枚舉的valueof,里面的值可以是自己定義的枚舉常量的名稱
20          * 其中valueOf方法會把一個String類型的名稱轉變成枚舉項,也就是在枚舉項中查找字面值和該參數相等的枚舉項。
21          */
22 
23         Color color =Color.valueOf("GREEN");
24         System.out.println(color.getDesc());
25 
26         /**
27          * 測試枚舉的toString()方法
28          */
29 
30         Color s2 = Color.getValue(0) ;
31         System.out.println("獲取的值為:"+ s2.toString());
32 
33     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM