Kotlin 接口构造函数

Eer*_*ist 12 generics kotlin

在 Kotlin 中,我希望有一个接口,要求实现类具有特定的构造函数。像这样的东西:

interface Inter<T> {
    // Must have constructor (t: T)
}

class Impl(t: String): Inter<String> 

Run Code Online (Sandbox Code Playgroud)

如何实现这一目标?

Wil*_*zel 13

Kotlin 中的接口不能有构造函数。

接口可以有

  • 抽象方法的声明
  • 方法实现
  • 抽象属性
  • 提供访问器实现的属性

最接近您想要实现的目标的是使用抽象类或普通类:

abstract class Foo<T>(val t: T)

class Bar<T>(t: T): Foo<T>(t)
Run Code Online (Sandbox Code Playgroud)

请注意,Bar必须调用 的主构造函数Foo,但不必公开它。

abstract class Foo<T>(val t: T)

class Bar: Foo<String>("Hello")
Run Code Online (Sandbox Code Playgroud)

所以,这是完全有效的:

Bar()
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,您实际上不能坚持实现类具有特定的构造函数。