我希望函数位于类中(不污染全局命名空间)但可以静态访问(从不创建它们所在的对象)。 建议的解决方案:
object A {
@JvmStatic
fun mkdir() {}
}
这是一个好的解决方案还是会不可避免地创建一个对象?我应该使用哪种模式?
答案 0 :(得分:0)
不幸的是,目前无法在 Kotlin 中的类上创建静态函数,该函数不会导致对象(伴随对象)的实例化。如果你想这样做,你必须用 Java 编写它并从 Kotlin 调用它。
@JvmStatic
注释在 JVM 字节码中创建了一个静态方法,但所做的只是检索伴随对象的实例并在其上调用该方法,您可以通过反编译生成的字节码来验证。