如何通过反射获取内部定义的扩展成员?

来源:9-1 反射的基本概念

三生三途

2020-06-24

图片描述

写回答

2回答

bennyhuo

2020-06-24

我把问题标题编辑了一下,方便其他同学参考。

这个例子的使用方法如下:

class A {
    fun String.hello() {
        println("Hello $this")
    }
}
fun main() {
    A::class.declaredMemberExtensionFunctions.forEach {
        if (it.name == "hello") {
            it.call(A(), "benny")
        }
    }
}

打印输出:

Hello benny

0
1
三生三途
非常感谢!
2020-06-24
共1条回复

bennyhuo

2020-06-24

视频里面可没教你这么写。。。。你先仔细对照一下视频看看,这么明显的错误

0
2
bennyhuo
回复
三生三途
可能同学没有接触过java的反射,反射获取是没法直接这么写的。 declaredxxxxx 拿到的是一个list 要挨个遍历通过name来比较是哪一个的。试试看,前面都学过的话,这应该不是什么问题。
2020-06-24
共2条回复

学会Kotlin 突破开发语言瓶颈

如果有一门语言可以取代Java,那么它一定是Kotlin。

1760 学习 · 481 问题

查看课程