【发布时间】:2021-08-13 03:34:56
【问题描述】:
我希望拥有位于类中的函数(不污染全局命名空间)但可以静态访问(从不创建它们所在的对象)。 建议的解决方案:
object A {
@JvmStatic
fun mkdir() {}
}
这是一个好的解决方案还是会不可避免地创建一个对象?我应该使用哪种模式?
【问题讨论】:
-
@gidds "顶层函数不会污染全局命名空间" 正点,我的意思是你不一眼就知道函数在哪里,除非你添加部分的包到调用。关于现有问题:他们只是给出标准对象模式,似乎总是创建一个单例
-
伴生对象会创建新的底层对象吗?
-
@EmmanuelMess
companion objects 是objects。 Kotlin 中的object声明被转换为具有静态初始化唯一实例的常规类。使用@JvmStatic,方法mkdir将是静态的,但是在初始化类时仍然会创建唯一实例。对于单例的创建,您到底关心什么?
标签: kotlin object static-methods