Kotlin學習之類與對象篇—枚舉類

枚舉類的基本用法是實現類型安全枚舉:

enum class Direction {
    NORTH, SOUTH, WEST, EAST
}

每個枚舉常量都是一個對象,枚舉常量用逗號隔開。

初始化

由於每個枚舉都是枚舉類的一個實例,他們能初始化如下:

enum class Color(val rgb: Int) {
        RED(0xFF0000),
        GREEN(0x00FF00),
        BLUE(0x0000FF)
}


匿名類

枚舉常量可以聲明它們自己的匿名類:

enum class ProtocolState {
    WAITING {
        override fun signal() = TALKING
    },

    TALKING {
        override fun signal() = WAITING
    };

    abstract fun signal(): ProtocolState
}

如果枚舉類中定義了其它成員,需要用分號將枚舉常量和其它成員隔開,就像Java一樣。

實現接口

一個枚舉類可以實現接口(但是不能繼承類), 可以選擇統一實現接口的成員或者每個枚舉在其匿名類中單獨實現.

enum class IntArithmetics : BinaryOperator<Int>, IntBinaryOperator {
    PLUS {
        //單獨實現
        override fun apply(t: Int, u: Int): Int = t + u
    },
    TIMES {
        //單獨實現
        override fun apply(t: Int, u: Int): Int = t * u
    };
    //統一實行方法applyAsInt
    override fun applyAsInt(t: Int, u: Int) = apply(t, u)
}


使用枚舉常量

和Java一樣,Kotlin也有列出枚舉類中所有枚舉常量和通過名字獲取單個枚舉的方法。
假設枚舉類的名字爲EnumClass

//通過名字獲取單個枚舉
EnumClass.valueOf(value: String): EnumClass
//獲取所有枚舉
EnumClass.values(): Array<EnumClass>

所有枚舉常量都有兩個固定的屬性: nameordinal

  • name: String 返回枚舉的名稱
  • ordinal: Int 返回枚舉在所有枚舉常量中的位置,初始位置爲0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章