我对函数有了定义
abstract class AbstractDao<T>(private val dataStore: KotlinEntityDataStore<Persistable>): Dao<T> where T: Persistable 我需要从T类型获取KClass。这在Kotlin是可能的吗?
发布于 2017-12-30 23:44:38
由于type erasure的原因,无法执行此操作。但是您可以提供一个带有reified type的工厂方法,该方法将委托给接受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>()https://stackoverflow.com/questions/48035181
复制相似问题