与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重命名生成的Getters和Setters
  • Kotlin和Dagger 2:使用Provider类的问题
  • 在kotlin中重构我的viewholder类
  • 无法在Android Studio 3.0上运行kotlin项目
  • 在Kotlin项目中应用Realm插件会导致编译错误
  • 泛化参数和返回类型的泛化方法
  • 在混合Java / Kotlin项目中使用Dagger 2的Maven配置
  • 与Kotlin多平台一起使用Gradle子项目
  • 当我在Kotlin中使用委托时,MutableMap <String,Any>如何将值传递给var?
  • 如何设置android应用程序的自定义字体?
  • 领域嵌套对象排序
  • Kotlin language will be the best programming language for Android.