首页 > 解决方案 > kotlin 中的数据类和内联类有什么区别?

问题描述

kotlin 1.5.0中,我们已经看到了inline classwithvalue声明,但这似乎类似于,data class除了我们只能在其中创建一个变量,inline class而在data class我们可以创建更多变量。

但我仍然想知道这是什么想法inline class?或者我们能做什么inline class和不能做data class什么?

标签: javakotlinjvmjetbrains-ide

解决方案


内联类就是将一个类型包装在一个新类中。它更像是类型别名,但它也为我们提供了类型别名所不具备的类型安全性。内联类被替换为 java 代码中的底层数据类型。

这篇文章对内联类和一些陷阱提供了很好的见解:Inline Classes and Autoboxing in Kotlin

另一方面,如果该类被设计为仅保存某些数据,那么数据类可能是一个不错的选择,

data class User(val name: String, val followersCount: Int){}

然后该类会自动为我们提供一些默认方法。

val user = User("Youn", 5000)

// a default toString() method is implemented
println(user) // User(name=Youn, followersCount=5000)

// this is known as destructuring
// provided by the default componentN() function
val (name, followersCount) = User("Tivoli", 5)

// type of *name* is inferred to *String* and *followersCount* to *Int*
// name = Tivoli, followersCount = 5

此外,数据类中还提供了equals()和的默认实现。copy()查看更多:数据类 Kotlinlang 文档


推荐阅读