这些字符串何时会获得其值,它们都应产生相同的值吗?
class StringFactory{
companion object{
val str1 = App.shared.userSettings.getString(key, "")
val str2: String
get(){
return App.shared.userSettings.getString(key, "")
}
val str3 = getUserKey()
fun getUserKey():String {
return App.shared.userSettings.getString(key, "")
}
}
}
这些将何时改变其价值? 代码何时编译,何时阅读或其他时间?
答案 0 :(得分:1)
str1
和str3
属性是在创建StringFactory.Companion
时分配的,并且永远不会更改其值。
在str2
中,该属性将在您每次访问userSettings
时获取。没有用于存储该值的字段。它的行为基本上与getUserKey()
相同。