gpt4 book ai didi

kotlin - 局部函数反射Kotlin

转载 作者:行者123 更新时间:2023-12-02 13:39:52 25 4
gpt4 key购买 nike

我了解如何在类中获取声明的函数。
例:

@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):非常感谢您的回答,我的函数位于不同的文件中,并且我不知道类的名称。

最佳答案

假设您的代码位于Hello.kt文件中,则可以这样执行:

@Target(AnnotationTarget.FUNCTION)
annotation class Foo (val name: String)

@Foo("foo")
fun baz() {
println("foo")
}

fun main() {
val clazz = Class.forName("HelloKt")
val declaredMethods = clazz.declaredMethods

declaredMethods.filter {
it.isAnnotationPresent(Foo::class.java)
}.forEach {
it.invoke(clazz)
}
}

关于kotlin - 局部函数反射Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64581666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com