kotlin基础 枚举
enum class WEEK {星期一,星期二,星期三,星期四,星期五,星期六,星期日}
Kotlin 枚举类
枚举类最基本的用法是实现一个类型安全的枚举。
枚举常量用逗号分隔,每个枚举常量都是一个对象。
enum class Color{
RED,BLACK,BLUE,GREEN,WHITE
}
枚举初始化
每一个枚举都是枚举类的实例,它们可以被初始化:
enum class Color(val rgb: Int) {
RED(0xFF0000),
GREEN(0x00FF00),
BLUE(0x0000FF)
}
默认名称为枚举字符名,值从0开始。若需要指定值,则可以使用其构造函数:
enum class Shape(value:Int){
ovel(100),
rectangle(200)
}
枚举还支持以声明自己的匿名类及相应的方法、以及覆盖基类的方法。如:
enum class ProtocolState {
WAITING {
override fun signal() = TALKING
}, TALKING {
override fun signal() = WAITING
}; abstract fun signal(): ProtocolState
}
如果枚举类定义任何成员,要使用分号将成员定义中的枚举常量定义分隔开
使用枚举常量
Kotlin 中的枚举类具有合成方法,允许遍历定义的枚举常量,并通过其名称获取枚举常数。
EnumClass.valueOf(value: String): EnumClass // 转换指定 name 为枚举值,若未匹配成功,会抛出IllegalArgumentException
EnumClass.values(): Array<EnumClass> // 以数组的形式,返回枚举值
获取枚举相关信息:
val name: String //获取枚举名称
val ordinal: Int //获取枚举值在所有枚举数组中定义的顺序
实例
enum class Color{
RED,BLACK,BLUE,GREEN,WHITE
} fun main(args: Array<String>) {
var color:Color=Color.BLUE println(Color.values())
println(Color.valueOf("RED"))
println(color.name)
println(color.ordinal) }
自 Kotlin 1.1 起,可以使用enumValues<T>()
和enumValueOf<T>()
函数以泛型的方式访问枚举类中的常量 :
enum class RGB { RED, GREEN, BLUE } inline fun <reified T : Enum<T>> printAllValues() {
print(enumValues<T>().joinToString { it.name })
} fun main(args: Array<String>) {
printAllValues<RGB>() // 输出 RED, GREEN, BLUE
}
kotlin基础 枚举的更多相关文章
- python基础——枚举类
python基础——枚举类 当我们需要定义常量时,一个办法是用大写变量通过整数来定义,例如月份: JAN = 1 FEB = 2 MAR = 3 ... NOV = 11 DEC = 12 好处是简单 ...
- Kotlin基础篇(一)
写在前面: 因为工作需要,目前转安卓开发,用的IDE是AS3.2版本,语言的话,用的是Kotlin.由于之前是做.NET的,没接触过这方面的东西,所以完全是小白一枚.所以想着开个博客,以此来记录自己的 ...
- Kotlin基础语法:变量、函数、类、枚举、控制流
一切都需要从基础学起! 前言: 在Kotlin语言中,没有分号的概念了,也就是每一行代码,都不在需要用分号结束了 点击查看代码 定义 常量:val --相当于java当中的final 变量:var 关 ...
- Java基础——枚举详解
前言: 在第一次学习面向对象编程时,我记得最深的一句话就是“万物皆对象”.于是我一直秉承着这个思想努力的学习着JAVA,直到学习到枚举(Enum)时,看着它颇为奇怪的语法……我一直在想,这TM是个什么 ...
- Kotlin基础(五)Kotlin的类型系统
Kotlin的类型系统 一.可空类型 //s为null的话编译器会报错,没问号不能为空 fun strLen(s : String)=s.length //如果允许s为空可: fun strLen2( ...
- Kotlin基础(一)Kotlin快速入门
Kotlin快速入门 一.函数 /* * 1.函数可以定义在文件最外层,不需要把它放在类中 * 2.可以省略结尾分号 * */ fun main(args: Array<String>) ...
- Kotlin基础知识
1. 改进点/基础 //安全判空 val length = text?.length; //类型转换 if (object is Car) { var car = object as Ca } //操 ...
- 第二章(Kotlin基础)
基本要素:函数和变量 函数 函数定义规则 函数通过关键字 fun 用来声明一个函数 参数的类型与函数返回类型写在它的名称后面,这和变量声明一样 函数可以定义在文件的最外层,不一定要把它放在类中 示例: ...
- Kotlin基础特性深入讲解
继续学习基础语法,在上次https://www.cnblogs.com/webor2006/p/11183077.html中定义了一个两数相加的函数,如下: 其实对于这个函数还可以进一步简写,因为函数 ...
随机推荐
- 【Swagger2】解决swagger文档地址请求404的问题
一.出现的问题背景 某个项目,本地启动后,访问swagger文档地址可以访问到, http://localhost:8203/doc.html.但是部署到开发环境就访问不到,报404资源找不到的问题 ...
- Spring Cloud注册中心Eureka设置访问权限并自定义鉴权页面
原文:https://blog.csdn.net/a823007573/article/details/88971496 使用Spring Security实现鉴权 1. 导入Spring Secur ...
- Educational Codeforces Round 69 D. Yet Another Subarray Problem
Educational Codeforces Round 69 (Rated for Div. 2) D. Yet Another Subarray Problem 题目链接 题意: 求\(\sum_ ...
- 项目Beta冲刺--2/7
项目Beta冲刺--2/7 作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Beta冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综合评估及 ...
- Docker 中 MySQL 数据的导入导出
Creating database dumps Most of the normal tools will work, although their usage might be a little c ...
- .prop()和.attr()的区别
具有 true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr()
- hdu3974-Assign the task-(dfs+线段树)
题意:有n个人,有上下级关系,有m个操作,有两种操作1.把一个任务分给某个人,他的下属也会停下手中工作和他一起做:2.查询某个人的当前任务是什么? 解题:n-1个关系,总有一个人没有上级,以他为根节点 ...
- LeetCode 1249. Minimum Remove to Make Valid Parentheses
原题链接在这里:https://leetcode.com/problems/minimum-remove-to-make-valid-parentheses/ 题目: Given a string s ...
- PostgreSQL 慢查询SQL跟踪
PostgreSQL 开启慢SQL捕获在排查问题时是个很有效的手段.根据慢SQL让我在工作中真正解决了实际问题,很有帮助. PostgreSQL 日志支持的输出格式有 stderr(默认).csvlo ...
- Django3 的服务器搭建
进入python虚拟环境 执行以下 命令 source env/bin/active 激活并切换虚拟环境 安装 pip3 install django 创建django项目 django-admin ...