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
相关推荐
阿pin11 小时前
Android随笔-kotlin Flow
android·kotlin·flow
XiaoLeisj11 小时前
Kotlin Flow 常用操作符:数据变换 map、filter、onEach,时间控制 debounce、sample,终端聚合 reduce、fold
android·kotlin·android jetpack·协程·响应式编程·flow
Kapaseker12 小时前
小白都看得懂的 Skill 教程 - 创建第一个 Skill
android·kotlin·vibecoding
zhangphil12 小时前
Android BitmapFactory实现AOSP ContentResolver.loadThumbnail快速取小缩略图,Kotlin
android·kotlin
Android-Flutter13 小时前
android 生命周期管理,继承Activity,不是AppCompatActivity
android·kotlin
XiaoLeisj1 天前
Kotlin Flow:冷流收集、并行订阅、emit 推送、delay 延迟、collect 全量收集与 collectLatest 的实时数据处理
android·kotlin·android jetpack·协程·flow
Android-Flutter2 天前
android jetpack 详解
android·kotlin
Enaium2 天前
我实现了KMP的SDL绑定并编写了高性能软光追
前端·kotlin
Android打工仔2 天前
Continuation 的链式关系 —— 一个 suspend 函数如何把结果交还给调用者?
android·kotlin
Kapaseker3 天前
小白都看得懂的 Skill 教程 - 初识 Skill
android·kotlin·vibecoding