iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0
Kotlin

new to Kotlin系列 第 20

Day 20 列舉類別以及內嵌值類別

  • 分享至 

  • xImage
  •  

列舉類別(Enum classes)

  • 每個列舉的常數都是物件
  • 每個列舉常數透過逗號分開
enum class Direction {
    NORTH, SOUTH, WEST, EAST
}
  • 在列舉類別內實作介面
    需注意的是其並非衍生自類別
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
    };

    override fun applyAsInt(t: Int, u: Int) = apply(t, u)
}

內嵌類別(Inline value classes)

  • 須注意必要有一個屬性在主要建構子內被初始化
value class Password(private val s: String)
  • 內嵌類別被允許繼承自介面
interface Printable {
    fun prettyPrint(): String
}

@JvmInline
value class Name(val s: String) : Printable {
    override fun prettyPrint(): String = "Let's $s!"
}

fun main() {
    val name = Name("Kotlin")
    println(name.prettyPrint())
}

上一篇
Day 19 巢狀類別以及內部類別
下一篇
Day 21 委任
系列文
new to Kotlin30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言