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 */
来源:oschina
链接:https://my.oschina.net/u/4328499/blog/3882801