Какая особенность kotlin может использоваться для замены перехвата метода через прокси java - PullRequest
0 голосов
/ 06 февраля 2020

В java, если я хочу перехватить вызовы методов в классе, который я могу использовать Proxy.newProxyInstance(), и предоставить InvocationHandler, реализующий invoke().

. видно, что в kotlin вы можете использовать делегированные свойства для перехвата доступа к свойствам.

Есть ли какая-либо особенность kotlin, которую можно использовать для обеспечения аналогичной функциональности для методов?

1 Ответ

0 голосов
/ 06 февраля 2020

Kotlin не имеет стандартного и унифицированного способа создания Proxies. Вы все еще можете использовать Proxy.newProxyInstance() при использовании платформы K / JVM, но имейте в виду, что компилятор Kotlin будет генерировать / переименовывать метод (вы можете использовать @JvmName для контроля этого). На платформе JS есть похожая функция ( MDN do c здесь ), и у вас есть @JsName для обработки переименования метода.

Что касается Native, то есть ( Насколько мне известно) ни один из способов сделать это, так как рефлексия не реализована.

Цель делегирования - не предоставлять альтернативы прокси-серверу, но вы можете сойти с рук в некоторых случаях.

Есть запрос функции для этой функции здесь , но она не получила большого внимания

...