我知道数据类就像 kotlin 中默认带有 getter 和 setter 的简单模型,并且很简单:
data class User(val name: String, val age: Int)
是否可以为该数据类声明第二个构造函数?
最佳答案
Kotlin 数据类必须具有定义至少一个成员的主构造函数。除此之外,您可以添加辅助构造函数,如 Classes and Inheritance - Secondary Constructors 中所述。 .
对于您的类,以及示例辅助构造函数:
data class User(val name: String, val age: Int) {
constructor(name: String): this(name, -1) { ... }
}
请注意,辅助构造函数必须在其定义中委托(delegate)给主构造函数。
尽管辅助构造函数的许多常见问题都可以通过为参数设置默认值来解决。在上述情况下,您可以简化为:
data class User(val name: String, val age: Int = -1)
如果从 Java 调用这些,您应该阅读 Java interop - Java calling Kotlin关于如何生成重载的文档,有时可能是 NoArg Compiler Plugin其他特殊情况。
https://stackoverflow.com/questions/44391468/
相关文章:
android - 在库模块中使用 Kotlin,而不在 app 模块中使用它
android - 更新到 Kotlin 1.3.30 会破坏 Dagger 2.21 的构建
java - Kotlin 泛型 Array
kotlin - 为什么 UInt 没有 toDouble()?
android - 警告 "Kotlin plugin version is not the sam
gradle - 使用Gradle Kotlin DSL在Gradle中进行样板项目配置
java - 为什么以及何时将 @JvmStatic 与伴随对象一起使用?