本文通过简单总结了构造函数的通用用法,以及对应的最佳实践。
当类满足条件:只需要一个构造函数
的时候,最简单的是使用全属性的构造函数,如下所示
class Person0522(var name: String, var age: Int)
}
当然该写法还有比较复杂的写法
比如这样:
class Person0522 constructor(var name: String, var age: Int)
constructor
关键字比如这样:
class Person0522 constructor(name: String, age: Int) {
var name: String = name
var age: Int = age
}
不过种种比较下来,还是第一种最简单。
当一个类需要多个构造函数的时候,我们就需要改改写法了,利用传统的 constructor
来构建
class Person0522 {
var name: String = ""
var age: Int = -1
constructor()
constructor(name: String) {
this.name = name
}
constructor(name: String, age: Int) : this(name) {
this.age = age
}
init {
require(age > 0) { "还没出生了..." }
}
}
不过这种情况下,其实设计的非常不好了,因为参数name
和age
要么要有初始值,要么给默认值,都不怎么好。
当多构造函数写出来的时候,你是不是觉得很啰嗦,如果很啰嗦那么就对了,因为我们要对他进行优化,我们来看看这个写法:
class Person0522(var name: String, var age: Int = 0, var address: String = "")
val person0522 = Person0522(name = "xlf")
参数是有默认值的,要么为 null
,要么结合业务为某个特殊含义的值
利用显示参数赋值
这样是不是非常简单了?
如果在 Java
中,要简化多构造函数的情况,我们需要使用的是Builder
模式,但是 kotlin
的该用法,真的很省心啊。