generics - Kotlin 接口(interface)构造函数

标签 generics kotlin

在 Kotlin 中,我希望有一个接口(interface),它坚持实现类具有特定的构造函数。像这样的东西:

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

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


如何做到这一点?

最佳答案

接口(interface)在 Kotlin 中不能有构造函数。

接口(interface) can have :

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

  • 最接近您想要实现的目标是使用抽象类或普通类:
    abstract class Foo<T>(val t: T)
    
    class Bar<T>(t: T): Foo<T>(t)
    

    请注意,Bar必须调用 Foo 的主构造函数,但它不必暴露它。
    abstract class Foo<T>(val t: T)
    
    class Bar: Foo<String>("Hello")
    

    所以,这是完全有效的:
    Bar()
    

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

    关于generics - Kotlin 接口(interface)构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56409640/

    相关文章:

    嵌套成员的 Kotlin 可见性

    Kotlin:如何在不卡住 UI 的情况下延迟 Android 中的代码

    java - Name Clash, override fail, on a class 实现两个具有相同删除的接口(interface)

    java - Java 中可以将类型参数转换为类吗?

    F Sharp 中的 List<int> 与 int 列表

    android - 我收到 Caused by : android. view.InflateException : Binary XML file line #32: Error inflating class androidx. fragment.app.FragmentContainerView

    android - 如何使用 Dagger 2 提供上下文?

    swift - 如何在 Swift 中声明特定类型的 NSArray?

    java - 实例化泛型类

    android - OpenGL ES 2.0/GLSL 不呈现数据 (Kotlin)