bennyhuo / Bennyhuo

bennyhuo.vercel.app
8 stars 3 forks source link

也许你需要这个为数据类生成 DeepCopy 方法的库 | Bennyhuo #8

Open bennyhuo opened 5 years ago

bennyhuo commented 5 years ago

https://www.bennyhuo.com/2018/12/02/deepcopy/

前不久 JetBrains 在北京搞了一次技术大会,我在演讲当中提到了一个叫 DeepCopy 的库,那么我们今天就来详细说说它。我们有什么拷贝的需求?我们知道 Kotlin 的 data class 出厂自带了一套 copy 方法,这个 copy 方法呢,就是实打实的一个浅拷贝,例如:1data class GitUser(val name: String)它的 copy 方法其实就相当于:12

sarrow104 commented 2 years ago

kotlin 版本 : 1.5.30

deepCopy 测试失败

inline fun <reified T : Any> T.deepCopy(): T {
    ...
                if ((parameter.type.classifier as KClass<*>)?.isData == true) {
                    parameter to value?.deepCopy() // cannot be recursive
                } else {
   ...
    }
}
bennyhuo commented 2 years ago

kotlin 版本 : 1.5.30

deepCopy 测试失败

inline fun <reified T : Any> T.deepCopy(): T {
    ...
                if ((parameter.type.classifier as KClass<*>)?.isData == true) {
                    parameter to value?.deepCopy() // cannot be recursive
                } else {
   ...
    }
}

请详细描述一下你的问题

sarrow104 commented 2 years ago

我的错误,我将 this::class 写成 T::class 了;

all thing goes well