constructor - Kotlin 数据类可以有多个构造函数吗?

我知道数据类就像 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 结果为 "Cannot use T as a r

kotlin - 为什么 UInt 没有 toDouble()?

android - 警告 "Kotlin plugin version is not the sam

gradle - 使用Gradle Kotlin DSL在Gradle中进行样板项目配置

java - 为什么以及何时将 @JvmStatic 与伴随对象一起使用?

kotlin - 如何组织 Kotlin 扩展方法

android - Kotlin:const val 与 val

android - RealmObject 的 Kotlin 数据类