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
相关推荐
plainGeekDev8 小时前
Android 开发者再不转Kotlin,真的来不及了
android·kotlin
赏金术士8 小时前
第五章:数据层—网络请求与Repository
android·kotlin·compose
plainGeekDev9 小时前
Android 专家岗 Kotlin 面试题:能答出这些,说明你对语言设计有自己的理解
android·kotlin
plainGeekDev9 小时前
Android 资深岗 Kotlin 面试题:只会用协程不够,你得懂它为什么这么设计
android·kotlin
陈皮糖_11 小时前
Kotlin 设计哲学:写给Java开发者的思维转变指南
kotlin
赏金术士11 小时前
第二章:Compose入门—声明式UI编程
android·ui·kotlin·compose
阿正的梦工坊12 小时前
Kotlin 面试题全面解析:从基础到进阶
android·开发语言·kotlin
小林望北12 小时前
Kotlin 协程的挂起(suspend)原理
kotlin·挂起·kotlin协程·suspend
赏金术士13 小时前
第一章:项目概述与环境搭建
android·kotlin·compose
Kapaseker13 小时前
Kotlin 解构新语法完全解析:从"看位置"到"看名字"
android·kotlin