使用ASM从Java库创建Kotlin类的代理

时间:2018-06-09 16:09:24

标签: java kotlin kotlin-interop

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

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

方案如下

  • 用户发送Kotlin类
  • 我代理
  • 最后,我创建了这样的类的实例

最好的方法是什么?

修改

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

1 个答案:

答案 0 :(得分:0)

我遇到的问题是生成的类和方法是table。我正在使用的ASM代码没有处理最终方法,因为它们无法覆盖。

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

以下是解释此问题的页面:https://blog.frankel.ch/open-your-classes-and-methods-in-kotlin/