1. 数据类 (Data Class)

如果你写过 Java Entity/POJO,一定厌烦了写几十行的 GetterSetterequals()hashCode() toString()

Kotlin 中,只需要一个关键字:data

data class User(val id: Int, val name: String, val email: String)

val user = User(1, "Null猫", "null@cat.com")
println(user) // 输出: User(id=1, name=Null猫, email=null@cat.com)

val user2 = user.copy(name = "新名字")

2. 枚举类 (Enum Class)

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

    fun printColor() {
        println("name的颜色值是rgb")
    }
}

3. 密封类 (Sealed Class) —— 枚举的升级版

枚举只能有固定的常量,而密封类可以拥有带状态的子类。它常用于表示受限的类层次结构(比如网络请求的结果)。

sealed class Result<out T> {
    data class Success<T>(val data: T) : Result<T>()
    data class Error(val exception: Exception) : Result<Nothing>()
    object Loading : Result<Nothing>()
}

fun handleResult(result: Result<String>) {
    when (result) {
        is Result.Success -> println("成功: ${result.data}")
        is Result.Error -> println("失败: ${result.exception.message}")
        is Result.Loading -> println("加载中...")
    }
}