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