gpt4 book ai didi

java - kotlin的哪个功能可以用来替代通过java代理进行方法拦截

转载 作者:行者123 更新时间:2023-12-01 18:34:11 24 4
gpt4 key购买 nike

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

我发现在 kotlin 中您可以使用委托(delegate)属性来拦截属性访问。

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

最佳答案

Kotlin 没有标准且统一的方式来创建代理。使用 K/JVM 平台时,您仍然可以使用 Proxy.newProxyInstance() ,但请记住 Kotlin 编译器会生成/重命名方法(您可以使用 @JvmName 来某种程度的控制)。在 JS 平台上有一个有点类似的功能( MDN doc here ),并且您可以使用 @JsName 来处理方法重命名。

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

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

有一个针对此功能的功能请求 here ,但并没有引起太多关注

关于java - kotlin的哪个功能可以用来替代通过java代理进行方法拦截,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60094964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com