使用ASM在Java库中的Kotlin类上创建代理
我有一个使用ASM创建代理的Java库 在某一点上,用户向其发送一个Kotlin类。我可以从Java中检测到它是一个Kotlin类,但我不知道如何从它生成代理?我从这门课上读到的一切都是毫无意义的 场景如下使用ASM在Java库中的Kotlin类上创建代理,java,kotlin,kotlin-interop,Java,Kotlin,Kotlin Interop,我有一个使用ASM创建代理的Java库 在某一点上,用户向其发送一个Kotlin类。我可以从Java中检测到它是一个Kotlin类,但我不知道如何从它生成代理?我从这门课上读到的一切都是毫无意义的 场景如下 用户发送一个Kotlin类 我做了一个代理 最后,我创建了这样一个类的实例 这样做的最佳方式是什么 编辑 我刚刚意识到我不能重写Kotlin函数的原因之一是因为它们是作为字节码中的final方法生成的。有没有办法告诉Kotlin不要这样做?我遇到的问题是生成的类和方法是final。我使用
- 用户发送一个Kotlin类
- 我做了一个代理
- 最后,我创建了这样一个类的实例
我刚刚意识到我不能重写Kotlin函数的原因之一是因为它们是作为字节码中的
final
方法生成的。有没有办法告诉Kotlin不要这样做?我遇到的问题是生成的类和方法是final
。我使用的ASM代码没有处理最终方法,因为它们不能被覆盖
解决方案是将Kotlin中的类和函数标记为open
。您可以手动或使用all open
plugin执行此操作
下面是一个解释问题的页面:尝试打开kotlin类和方法,并检查这是否有助于bytecodeTrue中的最终方法。使用
open
有帮助。您在这里问什么还不完全清楚。Kotlin类的字节码应该与Java类的字节码相当,因此它的工作方式应该相同。你的具体问题是什么?