使用ASM在Java库中的Kotlin类上创建代理

使用ASM在Java库中的Kotlin类上创建代理,java,kotlin,kotlin-interop,Java,Kotlin,Kotlin Interop,我有一个使用ASM创建代理的Java库 在某一点上,用户向其发送一个Kotlin类。我可以从Java中检测到它是一个Kotlin类,但我不知道如何从它生成代理?我从这门课上读到的一切都是毫无意义的 场景如下 用户发送一个Kotlin类 我做了一个代理 最后,我创建了这样一个类的实例 这样做的最佳方式是什么 编辑 我刚刚意识到我不能重写Kotlin函数的原因之一是因为它们是作为字节码中的final方法生成的。有没有办法告诉Kotlin不要这样做?我遇到的问题是生成的类和方法是final。我使用

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

在某一点上,用户向其发送一个Kotlin类。我可以从Java中检测到它是一个Kotlin类,但我不知道如何从它生成代理?我从这门课上读到的一切都是毫无意义的

场景如下

  • 用户发送一个Kotlin类
  • 我做了一个代理
  • 最后,我创建了这样一个类的实例
这样做的最佳方式是什么

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

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

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


下面是一个解释问题的页面:

尝试打开kotlin类和方法,并检查这是否有助于bytecodeTrue中的最终方法。使用
open
有帮助。您在这里问什么还不完全清楚。Kotlin类的字节码应该与Java类的字节码相当,因此它的工作方式应该相同。你的具体问题是什么?