gpt4 book ai didi

android - Kotlin:伴随对象 lateinit vars 初始化一次吗?

转载 作者:行者123 更新时间:2023-11-29 15:33:27 25 4
gpt4 key购买 nike

给定以下代码:

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 初始化?

我的 Intent 是让一个简单的静态变量 names 保存那些预定义的名称。

更新:

这是假设我不想让:var names: arrayOf("George", "Keith", "Martha", "Margret") inside companion object.

最佳答案

is names going to be initialised/assigned twice, and therefore with any subsequent Foo initialisation?

在 init 中,每次都会阻止它初始化 names,因此它会为每个实例创建新的 Array

你可以通过简单的打印来验证这一点

class Foo {
companion object {
lateinit var names: Array<String>
}
init {
println("Creating Foo")
names = arrayOf("George", "Keith", "Martha", "Margret")
}

fun getHashCode():Int{
return names.hashCode()
}

}

fun main() {

var foo1 = Foo();
println(foo1.getHashCode());
var foo2 = Foo();
println(foo2.getHashCode());
}

在输出哈希码是不同的:

Creating Foo
746292446
Creating Foo
1072591677

关于android - Kotlin:伴随对象 lateinit vars 初始化一次吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59541924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com