课程表

Kotlin课程

工具箱
速查手册

Kotlin 枚举类

当前位置:免费教程 » 移动开发 » Kotlin

枚举类最基本的用法是实现一个类型安全的枚举。

枚举常量用逗号分隔,每个枚举常量都是一个对象。

  1. enum class Color{
  2. RED,BLACK,BLUE,GREEN,WHITE
  3. }

枚举初始化

每一个枚举都是枚举类的实例,它们可以被初始化:

  1. enum class Color(val rgb: Int) {
  2. RED(0xFF0000),
  3. GREEN(0x00FF00),
  4. BLUE(0x0000FF)
  5. }

默认名称为枚举字符名,值从0开始。若需要指定值,则可以使用其构造函数:

  1. enum class Shape(value:Int){
  2. ovel(100),
  3. rectangle(200)
  4. }

枚举还支持以声明自己的匿名类及相应的方法、以及覆盖基类的方法。如:

  1. enum class ProtocolState {
  2. WAITING {
  3. override fun signal() = TALKING
  4. },
  5.  
  6. TALKING {
  7. override fun signal() = WAITING
  8. };
  9.  
  10. abstract fun signal(): ProtocolState
  11. }

如果枚举类定义任何成员,要使用分号将成员定义中的枚举常量定义分隔开


使用枚举常量

Kotlin 中的枚举类具有合成方法,允许遍历定义的枚举常量,并通过其名称获取枚举常数。

  1. EnumClass.valueOf(value: String): EnumClass // 转换指定 name 为枚举值,若未匹配成功,会抛出IllegalArgumentException
  2. EnumClass.values(): Array<EnumClass> // 以数组的形式,返回枚举值

获取枚举相关信息:

  1. val name: String //获取枚举名称
  2. val ordinal: Int //获取枚举值在所有枚举数组中定义的顺序

实例

  1. enum class Color{
  2. RED,BLACK,BLUE,GREEN,WHITE
  3. }
  4.  
  5. fun main(args: Array<String>) {
  6. var color:Color=Color.BLUE
  7.  
  8. println(Color.values())
  9. println(Color.valueOf("RED"))
  10. println(color.name)
  11. println(color.ordinal)
  12.  
  13. }

自 Kotlin 1.1 起,可以使用 enumValues<T>()enumValueOf<T>() 函数以泛型的方式访问枚举类中的常量 :

  1. enum class RGB { RED, GREEN, BLUE }
  2.  
  3. inline fun <reified T : Enum<T>> printAllValues() {
  4. print(enumValues<T>().joinToString { it.name })
  5. }
  6.  
  7.  
  8.  
  9. fun main(args: Array<String>) {
  10. printAllValues<RGB>() // 输出 RED, GREEN, BLUE
  11. }
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号