Kotlin 枚举类

文章目录

定义

枚举类可枚举出一系列对象,使用enum修饰,在其内部只需要写出枚举对象的名称,用逗号,分割即可(这里的RedGreenBlue都是PrimaryColor类型的枚举对象)。

kt 复制代码
enum class PrimaryColor {
    Red, Green, Blue
}

枚举类与密封类和接口类似,不可被实例化。

此外,枚举类还不能被继承

Note:成员只能置于枚举对象之后,枚举对象后如果要定义其他成员,记得在最后一个枚举对象后加上分号;

构造函数

枚举类可以拥有主、次构造方法:

kt 复制代码
enum class PrimaryColor(val hex: Long, param: Any) {
    Red(0xFFFF0000), Green(0xFF00FF00), Blue(0xFF0000FF);

    constructor(hex: Long): this(0x00000000, 1)
}

普通成员

在枚举类中可以声明属性或方法:

kt 复制代码
enum class PrimaryColor(hex: Long) {
    Red(0xFFFF0000), Green(0xFF00FF00), Blue(0xFF0000FF);

    val red = 0f
    
    
    fun toRGBA() {}
}

Note:枚举对象中会生成nameordinal等成员,并且不可重写(final),定义成员时不要与它们重名。

抽象成员

枚举类中可以定义抽象abstract成员,每一个枚举对象都必须重写抽象成员:

kt 复制代码
enum class PrimaryColor(hex: Long) {
    Red(0xFFFF0000) {
        override fun toRGBA() {}
    },
    Green(0xFF00FF00) {
        override fun toRGBA() {}
    },
    Blue(0xFF0000FF) {
        override fun toRGBA() {}
    };

    abstract fun toRGBA()
}

when 分支判定

与密封类、接口类似,当when判断值为枚举类型并且所有情况必须列出时,如果将全部分支给出,则无需给出else分支:

kt 复制代码
enum class PrimaryColor {
    Red, Green, Blue
}


// 此时分支必须全部给出,给不全要使用 else 收尾
fun checkPrimaryColor(color: PrimaryColor) = when (color) {
    PrimaryColor.Red -> "红色"
    PrimaryColor.Green -> "绿色"
    PrimaryColor.Blue -> "蓝色"
}


fun main() {
    print(checkPrimaryColor(PrimaryColor.Red))
}
复制代码
红色
相关推荐
plainGeekDev12 小时前
null 判断 → Kotlin 可空类型
android·java·kotlin
plainGeekDev12 小时前
getter/setter → Kotlin 属性
android·java·kotlin
Junerver12 小时前
我写了一个 Compose Multiplatform 组件库,你可能会用到
kotlin·android jetpack
Ehtan_Zheng1 天前
Kotlin const val vs val:字节码、性能与隐藏陷阱详解
android·kotlin
zhangphil2 天前
大日志文件截取,从指定日志文件中提取两个标记字符串之间的全部内容,Kotlin
kotlin
朝星2 天前
Android开发[14]:网络优化之OkHttp
android·okhttp·kotlin
AI浩2 天前
模型剪枝与稀疏推理:结构化、非结构化、2:4 稀疏与大模型压缩(分层式精讲)
android·kotlin·剪枝
QING6183 天前
Kotlin 日常开发常用语法糖整理 —— 速记
android·kotlin·android jetpack
popcorn_min3 天前
共享单车需求预测:时间特征工程 + 随机森林,R² 达到 0.931
随机森林·r语言·kotlin
Attachment George3 天前
山东大学软件学院-项目实训-个人开发日志(十):材料问答链路开发——文档解析、OCR兜底与持续追问完善
python·ai·langchain·kotlin·rag