我正在尝试使用此代码通过反射来加载接口:
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()
不明白为什么会引发此异常