美文网首页
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