【发布时间】:2020-10-29 06:00:36
【问题描述】:
我了解如何在类中获取已声明的函数。
例子:
@Target(AnnotationTarget.FUNCTION)
annotation class Foo (val name: String)
class Bar {
fun main() {
val declaredMethods = this::class.java.declaredMethods
declaredMethods.filter {
it.isAnnotationPresent(Foo::class.java)
}.forEach {
it.invoke(this)
}
}
@Foo("foo")
fun baz() {
println("foo")
}
}
现在,我想检索具有注释的本地函数。
例子:
@Target(AnnotationTarget.FUNCTION)
annotation class Foo (val name: String)
@Foo("foo")
fun baz() {
println("foo")
}
提前谢谢你, 再见
为 Konstantin Raspopov 编辑:感谢您的回答,遗憾的是我的函数位于不同的文件中,我不知道类的名称。
【问题讨论】:
-
您可以在每个带有函数的文件中添加
@file:JvmName("Utils") @file:JvmMultifileClass注解,然后编译器将生成一个具有指定名称的Java外观类。你的情况有可能吗?
标签: kotlin reflection