Я пытаюсь загрузить интерфейс, используя отражение с этим кодом:
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()
Не понимаю, почему возникает это исключение