美文网首页
Android Kotlin 反射使用 (null receiv

Android Kotlin 反射使用 (null receiv

作者: 30eb7fe7eef0 | 来源:发表于2020-12-14 09:59 被阅读0次

最近在使用Kotlin反射遇到些问题,总结一下:
报错:java.lang.NullPointerException: null receiver
原来写法: (直接从Java转的Kotlin)

val clazz = Class.forName("xxxxx")
val method = clazz.getMethod("start", Context::class.java)
method.invoke(null, c)

会报错java.lang.NullPointerException: null receiver
查阅资料后发现是因为kotlin的object是单例模式,所以不先实例化是会报错的,所以做了如下修改

val clazz = Class.forName("xxxxx")

val constructor =  clazz.getDeclaredConstructor()
constructor.isAccessible = true

val target = constructor.newInstance()
val method = clazz.getDeclaredMethod("start",Context::class.java)
method.isAccessible = true

method.invoke(target, context)

至此可正常反射调用到start方法


欢迎大家留言讨论

相关文章

网友评论

      本文标题:Android Kotlin 反射使用 (null receiv

      本文链接:https://www.haomeiwen.com/subject/jszmgktx.html