当前位置: 首页 > news >正文

Kotlin 枚举类

使用 enum 修饰符;每个枚举常量都是一个对象,枚举常量以逗号分隔

// 枚举类
enum class Direction {NORTH, SOUTH, WEST, EAST
}// 每一个枚举都是枚举类的实例,所以可以这样初始化
enum class Color(val rgb: Int) {RED(0xFF0000),GREEN(0x00FF00),BLUE(0x0000FF)
}

枚举常量可以声明其带有相应方法以及覆盖了基类方法的自身匿名类 

enum class ProtocolState {WAITING {override fun signal() = TALKING},TALKING {override fun signal() = WAITING};// 如果枚举类定义任何成员,那么使用分号将成员定义与常量定义分隔开abstract fun signal(): ProtocolState
}

 一个枚举类可以实现接口(但不能从类继承)

enum class IntArithmetics : BinaryOperator<Int>, IntBinaryOperator {PLUS {override fun apply(t: Int, u: Int): Int = t + u},TIMES {override fun apply(t: Int, u: Int): Int = t * u};override fun applyAsInt(t: Int, u: Int) = apply(t, u)
}

枚举常量的列举或获取

// 假设枚举类的名称是 EnumClass
EnumClass.valueOf(value: String): EnumClass
EnumClass.values(): Array<EnumClass>enum class RGB { RED, GREEN, BLUE }fun main() {for (color in RGB.values()) println(color.toString()) // prints RED, GREEN, BLUEprintln("The first color is: ${RGB.valueOf("RED")}") // prints "The first color is: RED"for (color in RGB.entries) println(color.toString())// prints RED, GREEN, BLUE
}

可以使用 enumValues<T>() 与 enumValueOf<T>() 函数以泛型的方式访问枚举类中的常量

enum class RGB { RED, GREEN, BLUE }inline fun <reified T : Enum<T>> printAllValues() {print(enumValues<T>().joinToString { it.name })
}printAllValues<RGB>() // 输出 RED, GREEN, BLUE

每个枚举常量也都具有这两个属性:name 与 ordinal, 用于在枚举类声明中获取其名称与(自 0 起的)位置

enum class RGB { RED, GREEN, BLUE }fun main() {println(RGB.RED.name) // prints REDprintln(RGB.RED.ordinal) // prints 0
}

相关文章:

Kotlin 枚举类

使用 enum 修饰符&#xff1b;每个枚举常量都是一个对象&#xff0c;枚举常量以逗号分隔 // 枚举类 enum class Direction {NORTH, SOUTH, WEST, EAST }// 每一个枚举都是枚举类的实例&#xff0c;所以可以这样初始化 enum class Color(val rgb: Int) {RED(0xFF0000),GREEN(0x…...

可运营的Leadshop开源商城小程序源码 +H5公众号+带视频教程

源码简介 Leadshop是一款出色的开源电商系统&#xff0c;具备轻量级、高性能的特点&#xff0c;并提供持续更新和迭代服务。该系统采用前后端分离架构&#xff08;uniappyii2.0&#xff09;&#xff0c;以实现最佳用户体验为目标。 前端部分采用了uni-app、ES6、Vue、Vuex、V…...

Qt底层机制之对象树总结

Qt对象树是Qt框架中的一个重要概念,它用于管理对象之间的关系和生命周期。除了常规的对象树结构,Qt还提供了一些特殊的用法来扩展对象树的功能和灵活性。 1. 父子关系:Qt对象树通过设置父对象来建立父子关系。父对象负责管理子对象的内存分配和释放。这种关系可以通过`setP…...

QT C++ TCP Socket 请求心知天气

0.0 相关连接代码部分头文件具体实现 相关连接 心知天气官方天气图标 心知天气官网 代码部分 头文件 #include <QtNetwork> #include <QNetworkAccessManager> #include <QDebug> #include <QJsonValue> #include <QJsonArray> #include &l…...

双向链表的实现及头尾插入删除

双链表的增删查改 一.双向链表的初始化二.创建返回链表的头结点三.双向链表销毁四. 双向链表打印五.双向链表尾插六. 双向链表尾删七. 双向链表头插八.双向链表头删九.双向链表的查找十.双向链表在pos的前面进行插入十一. 双向链表删除pos位置的节点 一.双向链表的初始化 Lis…...

C语言—每日选择题—Day62

第一题 1. 在使用标准C库时&#xff0c;下面哪个选项使用只读模式打开文件&#xff1f; A&#xff1a;fopen("foo.txt", "r") B&#xff1a;fopen("foo.txt", "r") C&#xff1a;fopen("foo.txt", "w") D&#xf…...

基于 Sentry 的前端监控系统搭建(Linux)

一、前言 随着技术这几年的发展与沉淀&#xff0c;线上数据指标监控也变得尤为重要&#xff0c;研发人员和运营人员需要对线上的产品指标有所感知&#xff0c;同时风险也需要及时暴露&#xff0c;很多公司开始自建监控系统&#xff0c;但对于一些定制化要求不是特别高的团队&a…...

【C++入门到精通】Lock_guard与Unique_lock C++11 [ C++入门 ]

阅读导航 引言一、RAII机制1. 概念2. 原理3. 优点 二、Lock_guard1. 官方文档2. 概念3. 底层类模版4. 使用示例 三、Unique_lock1. 官方文档2. 概念及底层3. 使用示例 四、总结温馨提示 引言 在C11标准中&#xff0c;为了更方便地使用互斥锁&#xff08;Mutex&#xff09;来保…...

电路设计(8)——计时器的multism仿真

1.功能设计 这是一个计时电路&#xff0c;在秒脉冲的驱动下&#xff0c;计时器开始累加&#xff0c;6个数码管分别显示计时的 时&#xff1a;分&#xff1a;秒。 仿真图如下所示&#xff1a; 左边的运放构成了振荡电路&#xff0c;可以产生脉冲波。这个脉冲波给计时电路提供基准…...

Jmeter测试实践:文件下载接口

一 Jmeter步骤 1.打开jmeter4.0&#xff0c;新建测试计划&#xff0c;添加线程组。根据实际情况配置线程属性。 2.添加HTTP请求。根据接口文档进行配置。 Basic部分修改如下&#xff0c;Advanced部分保持默认。这里的参数id是文件的id&#xff0c;我进行了参数化&#xff0c…...

PyQt5实现学生管理系统第三天(下)

目录 一:学生课程导航 二:搜索框 三:查询 四:页面数据展示逻辑 上一节,我们介绍了课程管理的课程查询导航的功能。这一节我们介绍下学生课程的功能实现,因为学生课程只有一个查询列表,内容相对简单,所以我们在这一节也重点讲述下我们页面的展现逻辑。 一:学生课程…...

第4章 | 安徽某高校《统计建模与R软件》期末复习

第4章 参数估计 参数估计是统计建模的关键步骤之一&#xff0c;它涉及根据样本数据推断总体参数的过程。在统计学中&#xff0c;参数通常用于描述总体的特征&#xff0c;如均值、方差等。通过参数估计&#xff0c;我们可以利用样本信息对这些未知参数进行推断&#xff0c;从而…...

localforage本地存储(融合Web Storage,Web SQL Database,ndexedDB三种前端存储)

介绍 localForage 是一个快速而简单的 JavaScript 存储库。通过使用异步存储&#xff08;IndexedDB 或 WebSQL&#xff09;和简单的类 localStorage 的 API &#xff0c;localForage 能改善 Web 应用的离线体验。 在不支持 IndexedDB 或 WebSQL 的浏览器中&#xff0c;localF…...

【JavaWeb学习笔记】17 - ThreadLocal

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/threadlocal/src/com/yinhai/thread 目录 项目代码 一、什么是ThreadLocal? 二、ThreadLocal快速入门 三、源码解读 一、什么是ThreadLocal? 1. ThreadLocal的作用&#xff0c;可以实现在同一个线…...

【ARMv8M Cortex-M33 系列 1 -- SAU 介绍】

文章目录 Cortex-M33 SAU 介绍SAU 的主要功能包括SAU 寄存器配置示例 Cortex-M33 SAU 介绍 在 ARMv8-M 架构中&#xff0c;SAU&#xff08;Security Attribution Unit&#xff09;是安全属性单元&#xff0c;用于配置和管理内存区域的安全属性。SAU 是 ARM TrustZone 技术的一…...

sklearn 逻辑回归Demo

逻辑回归案例 假设表示 基于上述情况&#xff0c;要使分类器的输出在[0,1]之间&#xff0c;可以采用假设表示的方法。 设 h θ ( x ) g ( θ T x ) h_θ (x)g(θ^T x) hθ​(x)g(θTx)&#xff0c; 其中 g ( z ) 1 ( 1 e − z ) g(z)\frac{1}{(1e^{−z} )} g(z)(1e−z)1​…...

什么是众创空间?他有什么特点?

众创空间&#xff0c;是一种为大众创新创业提供专业化服务的创业服务平台&#xff0c;是顺应网络时代创新创业特点和需求&#xff0c;通过市场化机制、专业化服务和资本化途径构建的低成本、便利化、全要素、开放式的新型创业服务平台的统称。众创空间包括创客空间、联合办公空…...

什么是数据分析思维

参考 一文学会如何做电商数据分析&#xff08;附运营分析指标框架&#xff09; 电子商务该如何做数据分析&#xff1f;如何数据分析入门&#xff08;从各项指标表象进入&#xff09; https://www.processon.com/outline/6589838c3129f1550cc69950 数据分析步骤 什么是数据分析…...

利用Milvus Cloud和LangChain构建机器人:一种引人入胜且通俗易懂的方法

一、引言 机器人已经深入我们的日常生活&#xff0c;从家庭服务到工业生产&#xff0c;再到医疗和运输等领域。然而&#xff0c;这些机器人往往需要复杂的算法和数据处理技术才能有效地执行任务。在这个过程中&#xff0c;人工智能&#xff08;AI&#xff09;和机器学习&#…...

数据结构-如何实现一个队列?逐步解析与代码示例(超详细)

文章目录 前言1.队列的基本概念2.链表与数组实现队列的区别2.1数据存储结构2.2性能2.3内存使用 3.为什么选择链表实现队列&#xff1f;4.结构定义函数声明 5.核心操作5.1初始化 (QInit)5.2销毁 (QDestroy)5.3入队 (QPush)5.4出队 (QPop) 6.队列的查询操作6.1队首元素 (QueueFro…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...