Как получить пакет kotlin по рефлексии

Библиотека отражений Kotlin определяет KDeclarationContainer, который Represents an entity which may contain declarations of any other entities, such as a class or a package.

this::class возвращается KClass, который расширяет KDeclarationContainer, но как мне получить родитель KDeclarationContainerKPackage?)

1 ответ

Решение

Здесь нет KPackage в Котлин сейчас, но вы можете получить Java Package вместо этого, например:

val pkg:Package = this::class.java.`package`

Если вы действительно хотите получить KPackageImpl Например, вы можете получить его от kotlin.jvm.internal.Reflection, но это не имеет смысла, потому что отражение Kotlin еще не завершено, например:

val pkg = Reflection.getOrCreateKotlinPackage(this::class.java, "")
//  ^--- there is no methods to get package information like as java.lang.Package,
//       since it is a `KDeclarationContainer` rather than a `KPackage`
Другие вопросы по тегам