Kotlin学习之枚举类
Posted 唐僧洗澡不秃头
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin学习之枚举类相关的知识,希望对你有一定的参考价值。
Kotlin 枚举类
枚举类最基本的用法是实现一个类型安全的枚举。
enum
关键字在类头中的class
关键字前面
enum class Color
...
枚举常量
枚举常量使用逗号分隔,每个枚举常量都是一个对象。
enum class Color
RED,
GREEN,
BLUE
访问枚举常量
枚举相关属性:
val name: String //获取枚举名称
val ordinal: Int //获取枚举值在所有枚举数组中定义的顺序
使用方式为:
枚举类名.枚举常量.属性
通过上面例子来实例讲解:
// 使用中缀符号访问枚举常量
Color.RED.name
Color.GREEN.name
Color.BLUE.name
枚举初始化
每一个枚举都是枚举类的实例,它们可以被初始化:
enum class Color(val rgb: Int)
RED(0xFF0000),
GREEN(0x00FF00),
BLUE(0x0000FF)
枚举常量的匿名类
要实现枚举常量的匿名类,则必须提供一个抽象方法(必须重写的方法)。且该方法定义在枚举类内部。而且必须在枚举变量的后面。
枚举变量之间使用逗号(
,
)分割开。但是最后一个枚举变量必须使用分号结束。不然定义不了抽象方法。
枚举还支持以声明自己的匿名类及相应的方法、以及覆盖基类的方法。如:
fun main(args: Array<String>)
ProtocolState.WAITING.signal()
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 )
inline fun <reified T : Enum<T>> printValue()
print(enumValueOf<T>("RED"))
fun main(args: Array<String>)
printAllValues<RGB>() // 输出 RED, GREEN, BLUE
printValue<RGB>() // 输出 RED
https://www.cnblogs.com/Jetictors/p/7751662.html
菜鸟教程:https://www.runoob.com/kotlin/kotlin-enum-classes.html
以上是关于Kotlin学习之枚举类的主要内容,如果未能解决你的问题,请参考以下文章