Android Kotlin 反射使用 (null receiver 异常问题)

最近在使用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方法



欢迎大家留言讨论

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。