java - 使用 ASM 从 Java 库中对 Kotlin 类进行代理

标签 java kotlin kotlin-interop

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

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

场景如下

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

    最好的方法是什么?

    编辑

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

    最佳答案

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

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

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

    关于java - 使用 ASM 从 Java 库中对 Kotlin 类进行代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50776147/

    相关文章:

    java - 安卓 : Can't decide on multiple if's or nested switch statements

    Java ArrayList IndexOf - 查找对象索引

    android - 如何使用jetpack compose删除卡片 View 的边框

    clojure - 如何在 Kotlin 中运行 Clojure?

    java - Google Java api - feed.insert(entry) 期间出现错误 "com.google.gdata.util.ServiceException: Bad Gateway"

    java - 在 build.xml 文件中构建以下目标时,Hybris ant 在 Eclipse 中全部失败

    kotlin - JOOQ:通过记录更新时如何添加返回子句

    list - 将 child 放在一个列表中

    Kotlin/ native : How to convert cArrayPointer to Array