如何通过反思得到一个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
?)
现在kotlin中没有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`