kotlin使用数据类泛型类型

时间:2017-11-12 18:58:24

标签: kotlin

您好,我已经通过kotlin文档,但没有找到任何东西。我想要做的是有一个通用的thar必须是一个数据类,如

data class MyData(val pop1:Long,val pop2:String,...)

fun class MyGenericClass<T : isDataClass>(o : T){
    // This is the important part
    fun useCopy(value : Long) = t.copy(pop1 = value)
}

我真正需要实现的是能够以通用方式使用数据类的复制功能(pop1将始终是我的数据类的成员)

提前致谢

1 个答案:

答案 0 :(得分:0)

您应该考虑为该特定问题使用接口。只需委托实现中的数据类copy

data class MyData(val pop1: Long, val pop2: String) : Pop1Data {
    override fun copy(pop1: Long) {
        copy(pop1 = pop)
    }
}

interface Pop1Data {
    fun copy(pop1: Long)
}

class MyGenericClass<T : Pop1Data>(private val o: T) {
    // This is the important part
    fun useCopy(value: Long) = o.copy(value)
}