代码之家  ›  专栏  ›  技术社区  ›  like

如何强制某些方法仅对kotlin可见

  •  5
  • like  · 技术社区  · 9 年前

    fun method(){} 这只能在kotlin代码中调用,不能在Java代码中调用。

    2 回复  |  直到 9 年前
        1
  •  7
  •   hotkey    9 年前

    通过使用 @JvmSynthetic 注释。它用 synthetic flag 在JVM字节码中,它的使用成为Java源代码中的一个错误(对其他JVM语言不太确定,需要检查,但可能也能正常工作):

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

    不幸地 不能用于标记类(它没有 CLASS 目标)。

    查看更多:

        2
  •  1
  •   voddan    9 年前

    标记了Kotlin stdlib中的一些方法 inline @kotlin.internal.InlineOnly

    此技巧用于减少stdlib上的方法计数。这是一种危险的解决方案,如果使用不当,可能会导致单独编译出现问题。

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

    TL;DR:你可以做到,但前提是你要为Kotlin stdlib捐款