相关疑难解决方法(0)

更改kotlin扩展函数接收器JVM名称

这是一个普遍的问题.假设我有一个用kotlin编写的扩展函数,它将DP转换为PX并返回一个NonNull Int

fun Int.toPx() {  /** implementation */ }
Run Code Online (Sandbox Code Playgroud)

java中的函数看起来像这样

public int toPx(int $receiver) {  /** implementation */ }
Run Code Online (Sandbox Code Playgroud)

在我看来,这$receiver使得Java-interop感觉生成和不受欢迎.

我知道你可以使用@JvmName注释和一些组合@file:JvmName来改变java中的名字.

当我尝试使用@JvmNamereceiver网站的目标,它说

"此注释不适用于目标type usage和使用站点目标@receiver"

有没有办法克服这一点并改变接收器的名称,如果不是最好的选择.

java java-interop kotlin kotlin-interop

6
推荐指数
1
解决办法
652
查看次数

标签 统计

java ×1

java-interop ×1

kotlin ×1

kotlin-interop ×1