【问题标题】:Nested data class in generic interface using Kotlin使用 Kotlin 在通用接口中嵌套数据类
【发布时间】:2018-06-11 12:36:18
【问题描述】:

如何在 Kotlin 中创建一个具有嵌套数据类的泛型接口,该类使用这种泛型类型?

类似这样的:

interface Exemplary<T> {

    data class Result(val value: T)

    ...
}

【问题讨论】:

    标签: generics interface kotlin data-class


    【解决方案1】:

    数据类也应该是通用的:

    interface Exemplary<T> {
    
        data class Result<T>(val value: T)
    
        fun getResult(): Result<T>
    }
    

    【讨论】:

      【解决方案2】:

      没有例如Exemplary&lt;Int&gt;.Result 但只是 Exemplary.Result;没有 T 就找不到 Result 像 Lukas 的回答那样通用。

      但是还有一个替代方案:inner classes. 如果你想让T 被接口实例修复,例如

      val x: Exemplary<Int> = ...
      val y = new x.Result(3)
      

      你需要创建类inner,然后是can't be data,你需要自己实现这些方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-17
        • 1970-01-01
        • 1970-01-01
        • 2013-10-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多