Kotlin中@JvmStatic仅适用于JVM?多平台场景能否使用?
关于Kotlin多平台中@JvmStatic注解的使用问题
- 核心结论:在类的伴生对象中使用
@JvmStatic注解,完全可以在多平台库中编译,非JVM平台会直接忽略该注解,不会产生编译错误或功能影响。 - 注解本质:
@JvmStatic是kotlin.jvm包下的JVM平台专属注解,作用是让Kotlin编译器在JVM字节码中把伴生对象的方法生成为类的静态方法,方便Java代码调用。 - 非JVM平台的处理逻辑:对于JS、Native等非JVM平台,Kotlin编译器会识别这是JVM专属注解,直接跳过处理,既不会报错,也不会改变伴生对象方法在非JVM平台的调用方式——非JVM平台依然通过伴生对象实例访问这些方法,和没有加注解时完全一致。
- 实践建议:如果你的多平台库需要兼顾JVM平台的Java调用场景,直接在伴生对象方法上添加
@JvmStatic即可;如果不需要支持Java调用,不加也不会影响跨平台逻辑。
内容的提问来源于stack exchange,提问作者maybeJosiah
相关产品推荐
相关产品推荐

