Я использую reified generics для захвата KClass<>
inline fun <reified T> register(generator: Generator<T>) { register(T::class, generator) }
Но у KType
есть некоторые дополнительные свойства, которые мне интересны, как nullability. Я хотел бы написать что-то подобное, чтобы захватить 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
захватить KType
вместо KClass<>
?
Заранее спасибо.
Нет, на данный момент этого не может быть сделано, есть проблема в трекере по проблеме Kotlin, в настоящее время отмеченная как « Обсуждаемая» .
Однако вы можете получить больше, чем просто KClass<T>
из параметра reified type, используя подклассификацию и, в частности, метод, называемый маркерами супертекста .