kotlin 的哪个特性可以通过 java 代理来替代方法拦截

Which feature of kotlin can be used as a replacedment of method interception via java proxies

在 java 中,如果我想 拦截 class 上的方法调用 ,我可以使用 Proxy.newProxyInstance() 并提供一个 InvocationHandler 实施 invoke().

我看到在 kotlin 中您可以使用 委托属性 来拦截 属性 访问。

kotlin 是否有任何特性可用于为方法提供类似的功能?

Kotlin 没有标准统一的创建方式Proxies。在使用 K/JVM 平台时,您仍然可以使用 Proxy.newProxyInstance(),但请记住,Kotlin 编译器将使用 generate/rename 方法(您可以使用 @JvmName 来控制它)。在 JS 平台上有一个有点类似的功能(MDN doc here),你有 @JsName 来处理方法重命名。

至于 Native,(据我所知)没有办法做到这一点,因为没有实现反射。

委派的目标不是提供代理的替代方案,但在某些用例中您可能会逃避它们。

有此功能的功能请求here,但没有受到太多关注