Kotlin:伴随对象lateinit var是否初始化一次?

问题描述 投票:0回答:3

给出下面的代码:

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")

android kotlin static companion-object kotlin-lateinit
3个回答
1
投票

您可以尝试下面的代码块来实现您想要的。


1
投票

名称将被初始化/分配两次,因此任何后续的Foo初始化吗?


0
投票

Kotlin中的Companion对象与Java中的static对象相同。通过在我们的类中声明一个伴随对象,您可以使用与调用Java中的静态方法相同的语法来调用其成员。是的,在kotlin中它也要初始化一次,我们有一个单例实例的更多关键字可在kotlin中创建单例。

© www.soinside.com 2019 - 2024. All rights reserved.