Как получить пакет 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
, но как мне получить родитель KDeclarationContainer
(а KPackage
?)
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`