【发布时间】:2019-12-31 09:08:35
【问题描述】:
给定以下代码:
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")。
【问题讨论】:
-
@JeelVankhede Ive 刚刚更新了我的问题。我知道有人会跳到那里去。
-
我假设你们都同意每次调用 init 时,都会为 names 分配一个新的数组实例?
-
是的,您可以尝试的另一件事是将初始化到另一个对象作为局部变量,然后使用它来分配您的伴随变量。
标签: android kotlin static companion-object kotlin-lateinit