我正在尝试了解Kotlin中的内联类
fun main(){
val password = Password("Current Password")
println(password)
println(password.password)
}
inline class Password(val password: String)
这是我根据文档编写的示例代码。现在他们说不会发生类密码的实例化。
我的输出应该是
Current Password
Current Password
但是我得到
Password(password=Current Password)
Current Password
如果没有实例化,那么当我们尝试直接访问password变量时,我们应该将其作为普通字符串访问吗?
但是toString()
和其他函数和属性仍然可以像类一样使用,就像它们用于基元一样。我不知道编译代码中的确切机制,但是我想它们的实现方式与扩展功能相同(在JVM上,扩展功能被编译为静态方法,而“ receiver”作为另一个参数)。
从您的角度来看,您仍然将它与任何原始类完全一样对待,这些原始类具有可包装为null或用作泛型的包装版本。但是您还有一个额外的好处,就是可以覆盖toString()
并添加功能而不使用扩展名。