Какая особенность kotlin может использоваться в качестве замены перехвата метода через прокси-серверы Java
В java, если я хочу перехватить вызовы метода в классе, я могу использоватьProxy.newProxyInstance()
и предоставить InvocationHandler
реализация invoke()
.
Я видел, что в kotlin вы можете использовать делегированные свойства для перехвата доступа к свойствам.
Есть ли какая-нибудь особенность kotlin, которая могла бы использоваться для обеспечения аналогичной функциональности для методов?
1 ответ
Kotlin не имеет стандартного и унифицированного способа создания Proxies
. Вы все еще можете использоватьProxy.newProxyInstance()
при использовании платформы K/JVM, но имейте в виду, что компилятор Kotlin сгенерирует / переименует метод (вы можете использовать @JvmName
чтобы контролировать это). На платформе JS есть похожая функция (здесь документ MDN), и у вас есть@JsName
для обработки переименования метода.
Что касается Native, то (насколько мне известно) нет способа сделать это, поскольку отражение не реализовано.
Цель делегирования не в том, чтобы предоставить альтернативу прокси, но в некоторых случаях они могут сойти с рук.
Существует запрос функции для этой функции здесь, но не получило много внимания