网站首页 > 精选教程 正文
scala枚举
枚举:Scala不支持enum关键字,通过继承Enumeration类实现枚举
枚举通常用来定义已知数量的常量,比如月份,星期,季节等等
定义一个星期的枚举
并定义一个打印所有值的方法
我们调用运行看一下,直接打印的枚举中的变量值
打印语句可以简化
调用
我们看输出的值
可以直接调用枚举值
withName也可以直接获取
有一个id 的属性
toString
直接通过下标
如果我们改变Tue的值,查看id的变化,就能发现id的值会改变,后面使用的值id也发生了变化
总结上面说明:
枚举值 说明
Enum.Mon 获取枚举值
Enum.Mon.id 获取枚举值ID
Enum.Mon.toString 获取枚举值名称
Enum.values.values 返回所有的枚举值的集合
Enum(2) 通过 id 获取枚举值(调用Enumeration.apply)
Enum.withName("2") 通过名称获取枚举值
有一些简单的用法
检测是否存在此枚举值
def checkExists(day:String) = this.values.exists(_.toString==day)
判断是否是工作日
def isWorkingDay(day:WeekDay) = ! ( day==Sat || day == Sun)
调用
注意这种使用
case class
Scala中一种特殊的class,叫做 case class
case class就是class和object的一个整合,在编译的过程中会自动的生成class和object的相关代码,并且在object中生成一个和class主构造函数同参数列表的apply方法,可以简化写object的过程
case class中默认的属性修饰符为 public val ,但是可以改变的,跟普通函数的定义是一样的,没有区别
case class中的属性最多允许22个,跟元组中是一样的
一般比较常用于模式匹配
用法简单示例
trait(特质)
scala中没有interface的概念,一般情况我们把trait当作Java的接口来使用
区别:
1. trait可以包含已经实现的方法或者属性(特质和接口的区别)
2. 和抽象类相比,一个类可以继承或者实现多个trait(特质和抽象类的区别)
scala中的class是单继承的,和Java一样,一个class的父类只有一个但是可以实现多个trait
trait是多继承的
scala中不支持implements关键字,使用extends和with管理继承/实现的代码逻辑
extends表示继承或者实现
with用于多trait的继承过程中
示例一:
示例二:
示例三:
猜你喜欢
- 2024-11-09 Java基础入门要学哪些 怎么掌握反射和枚举
- 2024-11-09 谈谈枚举的新用法--java java枚举类型有什么用
- 2024-11-09 Java面试基础回顾16-枚举 java面试基础知识点
- 2024-11-09 实际工作中推荐使用java枚举类型,提高开发效率#编程
- 2024-11-09 java枚举enumeration java枚举根据value获取key
- 2024-11-09 大年初二来简单聊聊java中枚举类的前世今生
- 2024-11-09 如何用枚举消除if/else?-枚举高阶用法
- 2024-11-09 干货 | 一文搞定Python 枚举 python 枚举遍历
- 2024-11-09 java中的enum第一期:enum存在的意义
- 2024-11-09 Scala基础学习九之枚举和Trait了解
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)