首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有内联类的函数的jvm方法名是否稳定?

带有内联类的函数的jvm方法名是否稳定?
EN

Stack Overflow用户
提问于 2022-01-14 10:07:48
回答 1查看 77关注 0票数 1

我声明了一个内联类

代码语言:javascript
复制
@JvmInline
value class Creator<T>(val type: KClass<T>);

,并声明了一个接口

代码语言:javascript
复制
interface Itf {
    fun <T> creator(type: KClass<T>): Creator<T>;
}

我希望通过asm(https://asm.ow2.io/ 1)生成字节码来实现这个接口。

我发现从字节码中解压缩的java方法是

代码语言:javascript
复制
public KClass<T> creator-9k1ZQyY();

java方法名为“create-9k1ZQyY”。后缀“-9k1ZQyY”是由kotlin编译器添加的,我知道为什么kotlin编译器会这样做。

这个后缀对于字节码生成器非常重要。

我的问题是:

如果接口和内联类是稳定的,kotlin编译器能保证后缀也是稳定的吗?这个后缀和kotlin编译器的版本无关吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-14 11:10:22

医生们似乎认为这种破坏是稳定的:

使用内联类的函数通过在函数名中添加一些稳定的哈希码而损坏。

正如在同一文档中所指出的,Kotlin编译器的版本1.4.30已经更改了一次,但我认为它还是相当稳定的。他们甚至提供了一个标志来使用旧的方案来生成二进制兼容的代码,所以我假设它不仅不太可能再次改变,而且即使它改变了,它也肯定会以某种方式来保持兼容性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70708918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档