2017-08-01 80 views

回答

6

您可以通过使用@JvmSynthetic注释正是你想要的实现。这标志着与在JVM字节码的synthetic flag的元素,它的用法成为Java源代码的错误(不太清楚有关其他JVM语言,需要进行检查,但可能它也能发挥作用):

@JvmSynthetic 
fun f() { /*...*/ } 

的标记的元素仍然可以在Kotlin中正常使用。

不幸的是,@JvmSynthetic不能用于标记一个类(它没有CLASS目标)。

查看更多:

+0

非常感谢您的回答! – like

1

Kotlin stdlib中的某些方法用@kotlin.internal.InlineOnly注释标记为inline。这使编译器将它们内联到kotlin代码中,而不会在JVM类中生成相应的方法。

这个技巧用于减少stdlib的方法数量。这是一个危险的解决方案,如果使用不正确,可能会导致单独编译时出现问题。

捕获:@kotlin.internal.InlineOnly注释是内部的,只能在标准库中使用。我知道没有将其发布到公共API中的计划。

TL; DR:你能做到这一点,但只有当你正促使科特林STDLIB

相关问题