给出下面的代码:
class Foo {
companion object {
lateinit var names: Array<String>
}
init {
names = arrayOf("George", "Keith", "Martha", "Margret")
}
}
如果我创建了两个Foo
实例:
var foo1 = Foo();
var foo2 = Foo();
names
是否将被初始化/分配两次,并因此进行任何后续的Foo
初始化?
我的意图是让一个简单的静态变量names
保存这些预定义的名称。
更新:
这是假设我不想在伴随对象中包含:var names: arrayOf("George", "Keith", "Martha", "Margret")
。
您可以尝试下面的代码块来实现您想要的。
名称将被初始化/分配两次,因此任何后续的Foo初始化吗?
Kotlin中的Companion对象与Java中的static对象相同。通过在我们的类中声明一个伴随对象,您可以使用与调用Java中的静态方法相同的语法来调用其成员。是的,在kotlin中它也要初始化一次,我们有一个单例实例的更多关键字可在kotlin中创建单例。