跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Kotlin枚举类
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Kotlin枚举类 = '''枚举类'''(Enum Class)是Kotlin中一种特殊的类,用于表示一组固定的常量。枚举类通过列举所有可能的取值来定义类型,使得代码更加清晰、类型安全且易于维护。枚举类常用于表示状态、方向、颜色等有限集合的场景。 == 基本语法 == Kotlin中使用<code>enum</code>关键字定义枚举类,每个枚举常量都是枚举类的实例,用逗号分隔。枚举类可以包含属性、方法和构造函数。 <syntaxhighlight lang="kotlin"> enum class Direction { NORTH, SOUTH, EAST, WEST } </syntaxhighlight> 上述代码定义了一个名为<code>Direction</code>的枚举类,包含四个常量:<code>NORTH</code>、<code>SOUTH</code>、<code>EAST</code>和<code>WEST</code>。 === 访问枚举常量 === 枚举常量可以通过类名直接访问: <syntaxhighlight lang="kotlin"> fun main() { val direction = Direction.NORTH println(direction) // 输出: NORTH } </syntaxhighlight> == 枚举类的属性和方法 == 枚举类可以像普通类一样定义属性和方法。每个枚举常量可以有自己的属性值,并通过构造函数初始化。 <syntaxhighlight lang="kotlin"> enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) } fun main() { val color = Color.RED println("${color.name} 的RGB值是 ${color.rgb.toString(16)}") // 输出: RED 的RGB值是 ff0000 } </syntaxhighlight> === 定义方法 === 枚举类可以定义方法,包括抽象方法。每个枚举常量可以覆盖这些方法: <syntaxhighlight lang="kotlin"> enum class Operation { ADD { override fun apply(x: Int, y: Int) = x + y }, SUBTRACT { override fun apply(x: Int, y: Int) = x - y }; abstract fun apply(x: Int, y: Int): Int } fun main() { println(Operation.ADD.apply(5, 3)) // 输出: 8 println(Operation.SUBTRACT.apply(5, 3)) // 输出: 2 } </syntaxhighlight> == 枚举类的实用功能 == Kotlin枚举类提供了一些内置属性和方法: * <code>name</code>:获取枚举常量的名称(字符串)。 * <code>ordinal</code>:获取枚举常量的序号(从0开始)。 * <code>values()</code>:获取所有枚举常量的数组。 * <code>valueOf()</code>:根据名称获取枚举常量。 <syntaxhighlight lang="kotlin"> enum class Weekday { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } fun main() { val days = Weekday.values() days.forEach { println("${it.name} 的序号是 ${it.ordinal}") } val day = Weekday.valueOf("FRIDAY") println(day) // 输出: FRIDAY } </syntaxhighlight> == 实际应用案例 == === 状态管理 === 枚举类常用于表示有限的状态,例如订单状态: <syntaxhighlight lang="kotlin"> enum class OrderStatus { CREATED, PROCESSING, SHIPPED, DELIVERED, CANCELLED } fun updateOrder(status: OrderStatus) { when (status) { OrderStatus.CREATED -> println("订单已创建") OrderStatus.PROCESSING -> println("订单处理中") OrderStatus.SHIPPED -> println("订单已发货") OrderStatus.DELIVERED -> println("订单已送达") OrderStatus.CANCELLED -> println("订单已取消") } } fun main() { updateOrder(OrderStatus.SHIPPED) // 输出: 订单已发货 } </syntaxhighlight> === 方向控制 === 枚举类可以用于表示方向,并定义相关行为: <syntaxhighlight lang="kotlin"> enum class Direction(val degrees: Int) { NORTH(0), EAST(90), SOUTH(180), WEST(270); fun opposite(): Direction { return when (this) { NORTH -> SOUTH EAST -> WEST SOUTH -> NORTH WEST -> EAST } } } fun main() { val direction = Direction.NORTH println("${direction.name} 的反方向是 ${direction.opposite().name}") // 输出: NORTH 的反方向是 SOUTH } </syntaxhighlight> == 高级用法 == === 实现接口 === 枚举类可以实现接口,为所有枚举常量提供统一的行为: <syntaxhighlight lang="kotlin"> interface Printable { fun print() } enum class LogLevel : Printable { INFO { override fun print() { println("信息日志") } }, WARNING { override fun print() { println("警告日志") } }; // 枚举类也可以定义非抽象的成员 fun log(message: String) { println("[$name] $message") } } fun main() { LogLevel.INFO.print() // 输出: 信息日志 LogLevel.WARNING.log("系统负载过高") // 输出: [WARNING] 系统负载过高 } </syntaxhighlight> === 使用密封类替代枚举 === 当需要更复杂的类型层次时,可以考虑使用密封类(Sealed Class)代替枚举类: <syntaxhighlight lang="kotlin"> sealed class Result { data class Success(val data: String) : Result() data class Error(val message: String) : Result() object Loading : Result() } fun handleResult(result: Result) { when (result) { is Result.Success -> println("成功: ${result.data}") is Result.Error -> println("错误: ${result.message}") Result.Loading -> println("加载中...") } } </syntaxhighlight> == 总结 == Kotlin枚举类是一种强大的工具,用于表示固定集合的值。通过枚举类,可以: * 定义类型安全的常量集合。 * 为每个枚举常量添加属性和方法。 * 实现接口或定义抽象方法。 * 使用内置的<code>values()</code>和<code>valueOf()</code>方法遍历或查找枚举常量。 枚举类特别适合表示状态、选项或有限集合的场景,能够显著提升代码的可读性和可维护性。 [[Category:编程语言]] [[Category:Kotlin]] [[Category:Kotlin面向对象编程]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)