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
相关推荐
UXbot3 小时前
2026年AI全链路产品开发工具对比:5款从创意到上线一站式平台深度解析
前端·ui·kotlin·软件构建·swift·原型模式
一直在想名1 天前
Flutter 框架跨平台鸿蒙开发 - 黑白屏
flutter·华为·kotlin·harmonyos
Kapaseker2 天前
如果你还没有搞懂 Kotlin 委托属性,进来看看
android·kotlin
唔662 天前
原生 Android(Kotlin)仅串口「继承架构」完整案例二
android·开发语言·kotlin
错把套路当深情2 天前
Kotlin 全方向开发技术栈指南
开发语言·kotlin
stevenzqzq2 天前
Kotlin 协程:withContext 与 async 核心区别与使用场景
android·开发语言·kotlin
stevenzqzq2 天前
Kotlin 语法深度拆解:从 Java 匿名内部类到极简 Lambda 完整演进
java·kotlin·lambda
唔662 天前
原生 Android(Kotlin)仅串口「侵入式架构」完整案例三
android·架构·kotlin
唔662 天前
原生 Android(Kotlin)仅串口「可插拔架构」完整案例一
android·架构·kotlin
Kapaseker3 天前
Compose 响应式布局要变天—入门 FlexBox
android·kotlin