Scala进阶之路-Scala中的枚举用法案例展示

耗尽温柔 提交于 2020-05-02 10:54:27

            Scala进阶之路-Scala中的枚举用法案例展示

                                    作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

  Scala中的枚举值和Java中的枚举值有点差别,不过使用起来也都差大同小异,我这里分别写了一个Java定义枚举类型和Scala定义枚举类型的案例。

 

 

一.Java中定义枚举类型案例展示

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
 4 EMAIL:y1053419035@qq.com
 5 */
 6 package cn.org.yinzhengjie;
 7 
 8 import java.util.Arrays;
 9 
10 /**
11  * 定义枚举类型,只需要使用关键字enum关键字即可,内部的每个元素用逗号(",")分隔。
12  */
13 enum Day {
14     MONDAY,
15     TUESDAY,
16     WEDNESDAY,
17     THURSDAY,
18     FRIDAY,
19     SATURDAY,
20     SUNDAY
21 }
22 
23 
24 public class EnumeratedTypeDemo {
25     public static void main(String[] args) {
26         //直接引用
27         Day day = Day.MONDAY;
28         System.out.printf("day:[%s]\n",day);
29 
30         /**
31          * values()方法的作用就是获取枚举类中的所有变量,并作为数组返回
32          */
33         Day day1 = Day.valueOf("WEDNESDAY");
34         System.out.printf("day1:[%s]\n",day1);
35 
36         /**
37          *      valueOf(String name)方法与Enum类中的valueOf方法的作用类似根据名称获取枚举变量,
38          * 只不过编译器生成的valueOf方法更简洁些只需传递一个参数。
39          */
40         Day[] days = Day.values();
41         System.out.printf("days:%s\n",Arrays.toString(days));
42         //向上转型Enum
43         Enum element = Day.FRIDAY;
44         //获取class对象引用
45         Class<?> clasz = element.getDeclaringClass();
46         if(clasz.isEnum()) {
47             Day[] res = (Day[]) clasz.getEnumConstants();
48             System.out.println("res:"+Arrays.toString(res));
49         }
50     }
51 }
52 
53 
54 
55 
56 
57 /*
58 以上代码执行结果如下:
59 day:[MONDAY]
60 day1:[WEDNESDAY]
61 days:[MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY]
62 res:[MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY]
63  */

 

二.Scala中定义枚举类型案例展示

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
 4 EMAIL:y1053419035@qq.com
 5 */
 6 package cn.org.yinzhengjie
 7 
 8 /**
 9   * 定义枚举类型需要继承“Enumeration”这个抽象类
10   */
11 object ColorClassification extends Enumeration{
12     val RED = Value(0,"红色")
13     val YELLOW = Value(1,"黄色")
14     val GREEN = Value(2,"绿色")
15     val PINK = Value(3,"粉色")
16     val BLUE = Value(4,"蓝色")
17     val ORANGE = Value(5,"橙色")
18     val BLACK = Value(6,"黑色")
19     val WHITE = Value(7,"白色")
20 }
21 
22 object EnumeratedType {
23     def main(args: Array[String]): Unit = {
24         println(ColorClassification.values)
25         println(ColorClassification.RED)
26         println(ColorClassification.RED.id)
27         println(ColorClassification.ORANGE.id)
28     }
29 }
30 
31 
32 
33 
34 /*
35 以上代码执行结果如下:
36 ColorClassification.ValueSet(红色, 黄色, 绿色, 粉色, 蓝色, 橙色, 黑色, 白色)
37 红色
38 0
39 5
40  */

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!