kotlin的哪个功能可以替代通过Java代理进行的方法拦截

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kotlin的哪个功能可以替代通过Java代理进行的方法拦截相关的知识,希望对你有一定的参考价值。

在Java中,如果我想对类进行[[拦截方法调用,则可以使用Proxy.newProxyInstance()并提供实现InvocationHandlerinvoke()

我已经看到,在kotlin中,您可以使用

委派的属性

来进行拦截属性访问。 kotlin是否具有可用于为方法提供类似功能的任何功能?
答案
Kotlin没有创建Proxies的标准和统一方法。在使用K / JVM平台时,您仍然可以使用Proxy.newProxyInstance(),但请记住,Kotlin编译器将生成/重命名方法(您可以使用@JvmName进行控制)。在JS平台上,有一个类似的功能(MDN doc here),并且您有@JsName来处理方法重命名。

就本机而言,(据我所知)由于没有实现反射,因此没有办法。

委派的目的不是提供代理的替代方案,但是您可以在某些用例中摆脱它们。

以上是关于kotlin的哪个功能可以替代通过Java代理进行的方法拦截的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin函数 ⑨ ( Kotlin 语言中的闭包概念 | Java 语言中函数作为参数的替代方案 )

Sword - 为 Kotlin 函数增加代理功能

HTTP代理有啥功能?哪个比较好用?

面试题:聊聊 Kotlin 代理的“缺陷”以及如何应对

Java:通过 HashMap 进行迭代,哪个更高效?

动态代理解析