gpt4 book ai didi

reflection - Kotlin 父类(super class) Kclass

转载 作者:行者123 更新时间:2023-12-02 12:54:52 25 4
gpt4 key购买 nike

我有功能的定义

abstract class AbstractDao<T>(private val dataStore: KotlinEntityDataStore<Persistable>): Dao<T> where T: Persistable 

我需要得到 KClass来自类型 T .在 Kotlin 有可能吗?

最佳答案

由于 type erasure,这无法完成.但是您可以提供带有 reified type 的工厂方法委托(delegate)给接受 KClass 的构造函数.这是一个简化的示例:

class WithReifiedType<T> constructor(val kc: KClass<*>) {
companion object {
inline fun <reified T> getInstance(): WithReifiedType<T> {
println("Here's your KClass: ${T::class}")
return WithReifiedType(T::class)
}
}
}

//called like this
WithReifiedType.getInstance<String>()

在调用者站点上创建一个看起来像构造函数的顶级函数(作为同伴嵌入式工厂的替代方案)也是可以接受的。
inline fun <reified T> WithReifiedType(): WithReifiedType<T> {
println("Here's your KClass: ${T::class}")
return WithReifiedType(T::class)
}

//called like this
WithReifiedType<String>()

关于reflection - Kotlin 父类(super class) Kclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48035181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com