Jay*_*ard 14 reflection kotlin
如果我遇到Kotlin类而不是通用Java类,我想要做特殊功能.如何检测它是否是Kotlin类?
someClass.kotlin如果班级不是Kotlin ,我希望调用会抛出异常或失败.但它包装Java类就好了.然后我注意到,如果我这样做someClass.kotlin.primaryConstructor似乎是null所有java类,即使他们有一个默认的构造函数,这是一个很好的标记?但这也可以null归功于Kotlin课程吗?
什么是最好的方式说"这是一个科特林课程吗?"
Jay*_*ard 16
Kotlin为其所有类添加了注释,您可以通过名称安全地检查其存在.这是一个实现细节,可能会随着时间的推移而改变,但是一些关键库使用这个注释,因此它可能无限期地存在.
fun Class<*>.isKotlinClass(): Boolean {
return this.declaredAnnotations.any {
it.annotationClass.qualifiedName == "kotlin.Metadata"
}
}
Run Code Online (Sandbox Code Playgroud)
可以用作:
someClass.isKotlinClass()
Run Code Online (Sandbox Code Playgroud)
kotlin.Metadata不会直接访问该类,因为它已internal在Kotlin运行时中标记.
| 归档时间: |
|
| 查看次数: |
570 次 |
| 最近记录: |