方法抛出“ java.lang.IllegalArgumentException”异常。无法评估$ Proxy0.toString()

时间:2019-05-16 13:49:23

标签: java android kotlin reflection

我正在尝试使用此代码通过反射来加载接口:

val clazz : Class<Client> = Client::class.java
val classLoader = clazz.classLoader
val invocationHandler = ProviderInvocationHandler()

Proxy.newProxyInstance(classLoader, arrayOf(clazz), invocationHandler)

这是我的客户端界面:

interface Client {
    fun getCustomer(id: String)
}

还有我的调用处理程序:

private class ProviderInvocationHandler : InvocationHandler {

    override fun invoke(proxy: Any?, method: Method?, args: Array<out Any>?): Any {
        Log.d("Reflection", "Invocation handler")

        return method!!.invoke(proxy, args)
    }
}

当我执行此代码,并且永远不会调用处理程序方法中的invoke时,不会进行任何附加操作。但是,如果我在变量中分配Proxy.newProxyInstance的值,则在调试器中会看到:Method threw 'java.lang.IllegalArgumentException' exception. Cannot evaluate $Proxy0.toString()

不明白为什么会引发此异常

0 个答案:

没有答案