我使用reified generics来捕获KClass<>
inline fun <reified T> register(generator: Generator<T>) {
register(T::class, generator)
}
但是KType
还有一些额外的属性,这些属性对我来说很有趣,比如可空性。我想写这样的东西来代替KType
。
inline fun <reified T> register(generator: Generator<T>) {
register(T::ktype, generator) // Doesn't compile
}
...
register<String?>(myGen) // The nullability of String? is captured
是否有某种方法可以捕获KType
而不是KClass<>
?
提前致谢。
答案 0 :(得分:3)
不,就目前而言,无法做到这一点,Kotlin问题跟踪器中有an issue关于它,目前标记为待讨论。
但是,您可以使用子类化,尤其是technique called super type tokens,从reified类型参数中获得更多KClass<T>
。