Android

关注公众号 jb51net

关闭
首页 > 软件编程 > Android > Kotlin 枚举类

Kotlin 枚举类使用举例

作者:xzkyd outpaper

枚举类(Enum Classes)是 Kotlin 中用于定义固定集合值的特殊类,它表示一组命名的常量,每个枚举常量都是该类的单例实例,接下来通过本文给大家介绍Kotlin枚举类使用举例,需要的朋友可以参考下

一、枚举类核心概念

枚举类(Enum Classes)是 Kotlin 中用于定义固定集合值的特殊类。它表示一组命名的常量,每个枚举常量都是该类的单例实例

二、基础语法与特性

1. 基本定义

enum class Color {
    RED, GREEN, BLUE
}

2. 带参数的枚举

enum class HttpStatus(val code: Int, val message: String) {
    OK(200, "Success"),
    NOT_FOUND(404, "Resource not found"),
    SERVER_ERROR(500, "Internal server error")
}

3. 实现接口

interface Printable {
    fun print()
}
enum class LogLevel : Printable {
    DEBUG {
        override fun print() = println("[DEBUG] Detailed info")
    },
    INFO {
        override fun print() = println("[INFO] Operation log")
    },
    ERROR {
        override fun print() = println("[ERROR] Critical issue")
    }
}

4. 内置属性

val color = Color.RED
println(color.name)    // 输出: RED
println(color.ordinal) // 输出: 0 (位置索引)

三、枚举类核心特性

特性说明示例
类型安全编译时检查有效值val color: Color = Color.RED
单例实例每个枚举常量是唯一实例Color.RED === Color.RED // true
可携带数据每个常量可拥有独立属性HttpStatus.OK.code // 200
可实现接口支持实现接口并提供不同实现LogLevel.DEBUG.print()
可定义方法可在枚举类或单个常量中定义方法Direction.NORTH.displayName()
迭代能力可通过values()获取所有枚举值Color.values().forEach { ... }

四、枚举类使用场景

1. 状态/模式管理

enum class ConnectionState {
    DISCONNECTED, CONNECTING, CONNECTED
}
fun handleState(state: ConnectionState) = when(state) {
    DISCONNECTED -> reconnect()
    CONNECTING -> showProgress()
    CONNECTED -> startDataTransfer()
}

2. 类型安全配置

enum class ImageFormat(val extension: String) {
    JPEG(".jpg"), PNG(".png"), WEBP(".webp")
}
fun saveImage(format: ImageFormat) {
    val filename = "image${format.extension}"
    // 保存操作
}

五、枚举类 vs 密封类

特性枚举类密封类
实例类型所有实例相同类型子类可以是不同类型
实例数量固定数量(声明时确定)子类可实例化多次
状态携带常量可带属性但状态固定每个子类可携带不同状态
继承能力不能被子类化可被继承(子类数量有限)
模式匹配支持when穷举支持when穷举+智能转换
适用场景固定值集合(颜色/状态码)有限但可扩展的类型集合(API响应/表达式树)

六、常见问题总结

Q:请解释Kotlin枚举类及其适用场景?

A

“Kotlin枚举类(enum class)是定义固定值集合的特殊类,核心解决三个问题:

1. 类型安全常量管理

2. 有限选项建模

3. 行为差异化实现

enum class Operation {
    ADD { override fun apply(a,b) = a+b },
    MULTIPLY { override fun apply(a,b) = a*b }
}

关键优势

对比密封类

特性枚举类密封类
实例类型同质异构
实例数量固定单例可多实例
状态携带常量级属性子类独立状态

典型应用场景

到此这篇关于Kotlin 枚举类的文章就介绍到这了,更多相关Kotlin 枚举类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文