1. 程式人生 > >Kotlin enum class 匿名類實例

Kotlin enum class 匿名類實例

其它 spa 重載 可能 es2017 color 父類 匿名類 開發

Kotlin裏的枚舉類裏有新玩意:就是枚舉類的常量可以同時看成是一個同名匿名類

既然是類就可以與方法關聯

看看官網的代碼

技術分享

如果你有過其它語言的使用枚舉的經歷,你可能對這個定義和說明很迷惑

我給你一個例子和結果,你就清楚多了

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

  TALKING {
  override fun signal() = WAITING
  };

  abstract fun signal(): ProtocolState
}

fun main(args: Array<String>) {

  val ev:ProtocolState = ProtocolState.WAITING
  println(ev.signal())

}

//結果

TALKING

Finally:

枚舉常量支持枚舉類,支持重載父類的方法,枚舉常量匿名類規則和常量一致,但常量匿名類和父類的其它分量要用";"隔開

好了,也許,你不屑於這種想法

但是,也許等你用上Kotlin做實際開發時就會愛上它,畢竟,任何創新肯定都是從老路上隱含提出的需求。

你不待見,很可能是你道行不夠而已。

Kotlin enum class 匿名類實例