与Kotlin重载的构造函数

因为我有一个User类有2个参数:名字,姓氏。 所以我的kotlin类是:

 data class User(val first_name:String, val last_name:String) 

现在我想要一个只接受first_name的构造函数,或者你可以只说一个参数。 我怎样才能用Kotlin来定义它?

我知道我们可以通过默认值,这样我们可以忽略第二个参数,但是我们怎样才能写出多个构造函数呢?

3 Solutions collect form web for “与Kotlin重载的构造函数”

你可以在类体中定义额外的构造函数

 data class User(val firstName: String, val lastName: String) { constructor(firstName: String) : this(firstName, "") } 

这些“次级构造函数”必须调用主构造函数或不同的次级构造函数。 请参阅有关构造函数的官方文档 。

所以,实际上这只是一个带有默认参数的主要构造函数,这将是惯用的方法。

 data class User(val firstName: String, val lastName: String = "") 

Kotlin中的类可以有主构造函数和一个或多个次构造函数。 主构造函数是类头的一部分:它在类名(和可选的类型参数)之后。

 class Person constructor(firstName: String) { } 

如果主构造函数没有任何注释或可见性修饰符,则可以省略构造函数关键字:

 class Person(firstName: String) { } 

请注意,主构造函数的参数可以在初始化块中使用。 它们也可以用在类体中声明的属性初始值设定项中:

 class Customer(name: String) { val customerKey = name.toUpperCase() } 

你也可以按照你的需要跟随这个链接: Kotlin

我希望这会帮助你

 class Person(val name: String, val age: Int = 0) { override fun toString(): String { return name + " is " + age + " years Old" } } fun main(args: Array<String>) { var person = Person(name = "vignesh") var personNew = Person("vignesh", 23) println(person.toString()) println(personNew.toString()) } 

产量

vignesh是0岁

vignesh是23岁

  • Kotlin未解决的参考:从Java代码转换后添加
  • 用于Java兼容性的公共字段
  • 如何传递上下文隐含在Kotlin中的构造函数
  • 协程异常处理程序为什么使原始异常加倍?
  • 使用Android数据绑定在Kotlin中初始化RecyclerView会引发错误。 我究竟做错了什么?
  • Android Studio + Spek集成
  • Kotlin:为什么使用抽象类(与接口)?
  • 如何在Java / Kotlin中包含Annotation Processor生成的代码来测试类路径
  • Kotlingenerics改变返回types
  • IntelliJ不排序Kotlin进口
  • 如何在Kotlin中运行编译后的类文件?
  • Kotlin language will be the best programming language for Android.