我想在 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()
        }
    }
}

最佳答案

Kotlin 不支持 Yole 已经说过的可选构造函数,但是您可以使用在伴随对象中定义的调用运算符来实现您想要的功能:

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/

10-08 23:16