我想在 Kotlin 中使用一个可选的构造函数,它要么创建一个对象,要么返回 null。
这是一个 Swift 示例,展示了我希望它如何工作:
class Beer {
init?(yourAge : Int){
if yourAge < 21 {
return nil
}
}
}
Beer(yourAge: 17) //is nil
Beer(yourAge: 23) //a Beer object
我当然可以将检查放在另一个函数中(下面是与前面示例等效的 Kotlin),但它不是那么好
class Beer(){
fun initialize(yourAge : Int): Beer? {
if (yourAge < 21){
return null
}else {
return Beer()
}
}
}
最佳答案
正如 Yole 所说,Kotlin 不支持可选的构造函数,但您可以使用在伴生对象中定义的调用运算符来实现您想要的:
class Beer {
companion object {
operator fun invoke(yourAge: Int) = if (yourAge < 21) {
null
} else {
Beer()
}
}
}
Beer(17) // null
Beer(23) // instance of Beer
关于swift - Kotlin 是否支持像 swift 这样的可选构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54147909/