Kotlin 内联值类(@JvmInline value class)

文章目录

我并不知道它的名字是不是这样翻译,以前是叫内联类(inline class),我感觉现在这样叫有点拗口,或者是"值内联类"?如果有错误,麻烦您花点时间告诉我一声,十分感谢。

定义

内联值类可以用于对某一类型做扩展,在运行时,内联值类并不会实例化出对象,而是仅仅使用其包裹值的类型。使用value和注解@JvmInline修饰(在旧版本是使用inlune修饰),并且在主构造函数中只能 声明一个val修饰的成员变量:

kt 复制代码
@JvmInline
value class Password(val value: String) {
    constructor(): this("默认密码")
}


fun main() {
    val defaultPassword = Password()
    val myPassword = Password("abc")
}

内联值类可以实现接口,也在内部定义成员和方法。

相等判定

数据类类似,两个内联值类对象在使用双等号==判断是否相等时,会判断两者的值是否相等:

kt 复制代码
@JvmInline
value class Password(val value: String)


fun main() {
    val pwd1 = Password("123")
    val pwd2 = Password("123")
    val pwd3 = Password("456")

    println(pwd1 == pwd2)
    print(pwd1 == pwd3)
}
复制代码
true
false
相关推荐
zhangphil21 小时前
Android Coil3视频封面抽取封面帧存Disk缓存,Kotlin
android·kotlin
QING6181 天前
Media3 ExoPlayer 快速实现背景视频播放(干货)
android·前端·kotlin
安卓开发者1 天前
深入理解Android Kotlin Flow:响应式编程的现代实践
android·kotlin·echarts
FunnySaltyFish1 天前
用cursor写了个基于大模型自动提取并翻译项目字符串的工具
android·vue.js·kotlin
pengyu2 天前
【Kotlin系统化精讲:伍】 | 数据类型之空安全:从防御性编程到类型革命🚀
android·kotlin
彼方卷不动了2 天前
【AI 学习】用 Kotlin 开发一个最基础的 MCP Server 并让它与 Cursor 联动
人工智能·kotlin·mcp
xzkyd outpaper3 天前
Kotlin 协程线程切换机制详解
android·开发语言·kotlin
zhangphil3 天前
Android MediaMetadataRetriever取视频封面,Kotlin(1)
android·kotlin
pengyu3 天前
【Kotlin系统化精讲:肆】 | 数据类型之基本数据类型:代码世界里的砖瓦水泥沙
android·kotlin
Kiri霧4 天前
Kotlin反射
java·开发语言·kotlin