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

时间:2021-10-30 17:08:41

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

                                    作者:尹正杰

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

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

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

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
EMAIL:y1053419035@qq.com
*/
package cn.org.yinzhengjie; import java.util.Arrays; /**
* 定义枚举类型,只需要使用关键字enum关键字即可,内部的每个元素用逗号(",")分隔。
*/
enum Day {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
} public class EnumeratedTypeDemo {
public static void main(String[] args) {
//直接引用
Day day = Day.MONDAY;
System.out.printf("day:[%s]\n",day); /**
* values()方法的作用就是获取枚举类中的所有变量,并作为数组返回
*/
Day day1 = Day.valueOf("WEDNESDAY");
System.out.printf("day1:[%s]\n",day1); /**
* valueOf(String name)方法与Enum类中的valueOf方法的作用类似根据名称获取枚举变量,
* 只不过编译器生成的valueOf方法更简洁些只需传递一个参数。
*/
Day[] days = Day.values();
System.out.printf("days:%s\n",Arrays.toString(days));
//向上转型Enum
Enum element = Day.FRIDAY;
//获取class对象引用
Class<?> clasz = element.getDeclaringClass();
if(clasz.isEnum()) {
Day[] res = (Day[]) clasz.getEnumConstants();
System.out.println("res:"+Arrays.toString(res));
}
}
} /*
以上代码执行结果如下:
day:[MONDAY]
day1:[WEDNESDAY]
days:[MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY]
res:[MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY]
*/

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

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
EMAIL:y1053419035@qq.com
*/
package cn.org.yinzhengjie /**
* 定义枚举类型需要继承“Enumeration”这个抽象类
*/
object ColorClassification extends Enumeration{
val RED = Value(0,"红色")
val YELLOW = Value(1,"黄色")
val GREEN = Value(2,"绿色")
val PINK = Value(3,"粉色")
val BLUE = Value(4,"蓝色")
val ORANGE = Value(5,"橙色")
val BLACK = Value(6,"黑色")
val WHITE = Value(7,"白色")
} object EnumeratedType {
def main(args: Array[String]): Unit = {
println(ColorClassification.values)
println(ColorClassification.RED)
println(ColorClassification.RED.id)
println(ColorClassification.ORANGE.id)
}
} /*
以上代码执行结果如下:
ColorClassification.ValueSet(红色, 黄色, 绿色, 粉色, 蓝色, 橙色, 黑色, 白色)
红色
0
5
*/