Scala 定义复杂枚举
通常我们需要枚举参数不止两个,Scala提供的枚举类最多定义两个参数:id:Int与name:String。不能满足我们通常要求。
object BaseEntryEnum extends Enumeration {
type BaseEntryEnum = Value
//item_base类别
val ITEM_TYPE_PURCHASE_CENTER = Value(31, "采购中心")
val ITEM_TYPE_COMPANY = Value(32, "公司")
val ITEM_TYPE_OI_ITEM = Value(33, "OI项")
val ITEM_TYPE_STORE_ITEM = Value(40, "门店白名单")
val ITEM_TYPE_STORE_BLACKLIST = Value(41, "门店黑名单")
}
如下enumeratum包可以满足我们需求,可以定义任意参数。
引入如下包
"com.beachape" %% "enumeratum-argonaut" % "1.5.13"
定义复杂枚举:
package com.today.service.financetask.job.define import com.today.api.financetask.scala.enums.TReportTypeEnum
import com.today.service.financetask.job._
import enumeratum.EnumEntry
import org.quartz.Job sealed abstract class JobEnum(
/**
* ID
*/
val jobId: String,
/**
* job名称
*/
val jobName: String,
/**
* job定义类
*/
val jobClass : Class[_ <: Job],
/**
* 定时任务cron表达式
*/
val cron: String) extends EnumEntry /**
* 所有Job 枚举定义在此类, 不能重复
* jobId不能重复
* @author BarryWang create at 2018/5/12 10:45
* @version 0.0.1
*/
case object JobEnum extends enumeratum.Enum[JobEnum]{
val values = findValues
case object DAY_TIME_PROCESS extends JobEnum("DAY_TIME_PROCESS",
"日次处理定时任务", classOf[DayTimeProcessJob], "0 30 2 * * ?") case object RETIREMENT_SYNC_PROCESS extends JobEnum("RETIREMENT_SYNC_PROCESS",
"采购系统同步报废单据数据定时任务", classOf[RetirementSyncProcessJob], "0 0 1 * * ?") case object PURCHASE_ORDER_2_SYNC_PROCESS extends JobEnum("PURCHASE_ORDER_2_SYNC_PROCESS",
"采购系统同步PO2数据定时任务", classOf[PurchaseOrder2SyncProcessJob], "0 0 5 * * ?") case object SEND_EMAIL_PROCESS extends JobEnum("SEND_EMAIL_PROCESS",
"计划付款通知和已付款通知定时任务", classOf[SendEmailProcessJob], "0 0 18 * * ?") case object CLOSE_ACCOUNT_BASE_DATA_PROCESS extends JobEnum("CLOSE_ACCOUNT_BASE_DATA_PROCESS",
"关账基础数据同步定时任务", classOf[CloseAccountBaseDataSyncJob], "0 30 23 L * ?") case object INCOME_DETAIL_REPORT extends JobEnum(TReportTypeEnum.INCOMEDETAIL_REPORT.id.toString,
"每天生成营收明细报表定时任务", classOf[DailyGenIncomeDetailJob], "0 10 0 * * ?") case object CHECK_ACCOUNT_PROCESS extends JobEnum("CHECK_ACCOUNT_PROCESS",
"对账系统自动对账定时任务", classOf[CheckAccountJob], "0 0 13 * * ?") case object MEMBER_ACCOUNT_PROCESS extends JobEnum("MEMBER_ACCOUNT_PROCESS",
"会员自动对账定时任务", classOf[MemberAccountJob], "0 1 0 * * ?") case object EXPORT_REPORT_LONG_HISTORY_STATUS extends JobEnum("EXPORT_REPORT_STATUS_PROCESS",
"清除90天前的财务报表定时任务", classOf[ExportReportStatusProcessJob], "0 15 1 ? * *") case object DING_TALK_LOGS_IMPORT extends JobEnum("DING_TALK_LOGS_IMPORT",
"导入钉钉审批记录定时任务", classOf[DingTalkImportProcessLogsJob], "0 10 1 ? * *") case object DING_TALK_DETAIL_IMPORT extends JobEnum("DING_TALK_DETAIL_IMPORT",
"导入钉钉审核通过审批单详情定时任务", classOf[DingTalkImportProcessDetailJob], "0 20 1 ? * *") /**
* jobId与jobName映射关系
* @return
*/
def jobIdNameMap : Map[String, String]={
JobEnum.values.map(x=> Map(x.jobId -> x.jobName)).fold(Map())((i,j) => i++j)
} /**
* JobObject与JobEnum映射关系
* @return
*/
def jobObjectEnumMap = {
JobEnum.values.map(x=> Map(x.jobClass.getName -> x)).fold(Map())((i,j) => i++j)
} /**
* jobId与JobEnum映射关系
* @return
*/
def jobIdEnumMap = {
JobEnum.values.map(x=> Map(x.jobId -> x)).fold(Map())((i,j) => i++j)
} }
Scala 定义复杂枚举的更多相关文章
- Scala进阶之路-Scala中的枚举用法案例展示
Scala进阶之路-Scala中的枚举用法案例展示 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Scala中的枚举值和Java中的枚举值有点差别,不过使用起来也都差大同小异,我这 ...
- Scala学习笔记--枚举
枚举 scala不用关注枚举的特别语法,取而代之的是标准库中的类, scala.Enumeration 想要创建新的枚举,只需要拓展这个类的对象即可 object Color extends Enum ...
- scala.的Enumeration枚举示例(转)
简介 在scala中没有枚举类型,但在标准类库中提供了Enumeration类来产出枚举.扩展Enumeration类后,调用value方法类初始化枚举中的可能值. 内部类value实际上是一个抽象类 ...
- go常量的定义和枚举类型
const a,b int = 1,2 const a,b = 1,2 const ( a = "hello" b,c =3,4 ) 常量数值可作为各种类型使用 枚举类型的 ...
- 一个C++宏定义与枚举定义重复的编译错误
C++的开发效率低是众所周知的,原因比如有: 语言复杂度高 编译效率低 工具链不够完整高效(尤其是linux下) 另外一个恐怕是不少编译错误让人摸不着头脑,今天碰到一个,举个例子: #include ...
- hdu3118Arbiter (使用二分图的定义,枚举每个状态)
Arbiter Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Sub ...
- Quartz实现分布式可动态配置的定时任务
关键词: 1. 定时任务 2. 分布式 3. 可动态配置触发时间 一般通过Quartz实现定时任务很简单.如果实现分布式定时任务需要结合分布式框架选择master节点触发也可以实现.但我们有个实际需求 ...
- Objective-C枚举的几种定义方式与使用
假设我们需要表示网络连接状态,可以用下列枚举表示: enum CSConnectionState { CSConnectionStateDisconnected, CSConnectionStateC ...
- oc中的枚举定义
typedef NS_ENUM(类型,枚举名){ 枚举名+值名, 枚举名+值名,}; 该方法定义的枚举,OC会自动把其转换成合适当前版本的枚举.如果枚举值可合并的话 NS_E ...
随机推荐
- C# 爬虫相关的、可供参考的开源项目
1. Abots https://github.com/sjdirect/abot/ 2. DotnetSpider https://github.com/dotnetcore/DotnetSpide ...
- 『Exclusive Access 2 dilworth定理 状压dp』
Exclusive Access 2 Description 给出 N 个点M 条边的无向图,定向得到有向无环图,使得最长路最短. N ≤ 15, M ≤ 100 Input Format 第一行一个 ...
- Vue基础框架
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <!-- 设置语言为 ...
- IDEA创建xml文件
今天在用IDEA写项目的时候发现,创建xml文件只能通过File手动输入去创建,但在我看的一个学习视频上可以直接创建xml文件,好奇之下研究了一下,作此篇,希望能对需要的朋友有所帮助. 废话就不多说了 ...
- Zabbix触发器和监控项设置时间范围
目录 一.实际业务场景 业务问题 解决办法 二.Zabbix触发器和监控项与用户预警设置时间范围配置流程 一.触发器设置时间范围 二.监控项设置时间范围 三.用户报警设置启用时间 一.实际业务场景 业 ...
- Centos安装jdk1.8出现-bash: //usr/local/soft/jdk1.8.0_191/bin/javac: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录错误。
1.从来没有这么郁闷,之前安装都是好好的,自从将Centos升级到7.0版本,安装了jdk报了这个错误,也是郁闷的一毛,参考了一下百度的,记录一下.使用java命令还有java -version命令都 ...
- 网格弹簧质点系统模拟(Spring-Mass System by Fast Method)附源码(转载)
转载: https://www.cnblogs.com/shushen/p/5311828.html 弹簧质点模型的求解方法包括显式欧拉积分和隐式欧拉积分等方法,其中显式欧拉积分求解快速,但积分步长 ...
- 配置 ASP.NET Core 请求(Request)处理管道
配置 ASP.NET Core 请求(Request)处理管道 在本节中,我们将讨论使用中间件组件为 asp.net core 应用程序配置请求处理管道. 作为应用程序启动的一部分,我们要在Confi ...
- Windows cmd 和 PowerShell 中文乱码问题解决
临时方案: 在命令行下输入:chcp 65001 长期方案: 要修改注册表,自己网上搜吧
- datatable转layui表格v2[分页and带模板]【偏实例】
本项目由普通mvc+webapi接口构成.按执行顺序,代码如下:主控制器:public ActionResult Index(int id=0) { ViewData["myid" ...