Kotlin自动派生类构造函数,带有签名匹配的超类构造函数

时间:2018-03-16 09:02:42

标签: kotlin

很抱歉,我没有这方面的实际例子,但我不时考虑这样的功能。这是我的合成例子:

abstract class Greeter(val firstName: String, val lastName: String) {
  abstract fun greet()
}

class Formal(firstName: String, lastName: String): Greeter(firstName, lastName) {
  override fun greet() {
    println("Hello $firstName $lastName!")
  }
}

class Informal(firstName: String, lastName: String): Greeter(firstName, lastName) {
  override fun greet() {
    println("Hi $firstName!")
  }
}

这里,超类构造函数由派生类显式调用。有可能自动完成吗?理想的是能够做到这样的事情:

class Informal(*): Greeter(*) {
  override fun greet() {
    println("Hi $firstName!")
  }
}

这将生成与超类(主)构造函数具有相同签名的派生类构造函数,并且该构造函数将只调用超类(主)构造函数。

对我来说,第一次定义派生类并不是一个大问题,但更改基类构造函数时更改所有派生类可能会很烦人。

1 个答案:

答案 0 :(得分:4)

从Kotlin 1.2.x开始,这是不可能的。这个功能有一个open feature request,正在考虑未来的Kotlin版本。