如何在不创建对象的情况下在 Kotlin 中创建静态函数

时间:2021-05-24 20:37:14

标签: kotlin object static-methods

我希望函数位于类中(不污染全局命名空间)但可以静态访问(从不创建它们所在的对象)。 建议的解决方案:

object A {
  @JvmStatic
  fun mkdir() {}
}

这是一个好的解决方案还是会不可避免地创建一个对象?我应该使用哪种模式?

1 个答案:

答案 0 :(得分:0)

不幸的是,目前无法在 Kotlin 中的类上创建静态函数,该函数不会导致对象(伴随对象)的实例化。如果你想这样做,你必须用 Java 编写它并从 Kotlin 调用它。

@JvmStatic 注释在 JVM 字节码中创建了一个静态方法,但所做的只是检索伴随对象的实例并在其上调用该方法,您可以通过反编译生成的字节码来验证。

>