2

我有一个使用 ASM 创建代理的 Java 库。

有一次,用户向它发送了一个 Kotlin 类。我可以检测到它是来自 Java 的 Kotlin 类,但我不知道如何从中制作代理?我从这样的课上读到的一切都是毫无意义的。

场景如下

  • 用户发送一个 Kotlin 类
  • 我做代理
  • 最后,我做了一个这样的类的实例

最好的方法是什么?

编辑

我刚刚意识到我不能覆盖 Kotlin 函数的原因之一是因为它们是作为final字节码中的方法生成的。有没有办法告诉 Kotlin 不要这样做?

4

1 回答 1

0

我遇到的问题是生成的类和方法是final. 我使用的 ASM 代码没有处理 final 方法,因为它们不能被覆盖。

解决方案是将 Kotlin 中的类和函数标记为open. 您可以手动或使用all-open插件执行此操作。

这是一个解释该问题的页面:https ://blog.frankel.ch/open-your-classes-and-methods-in-kotlin/

于 2018-06-10T06:17:23.590 回答