如何在Kotin的实例方法中使用构造函数中的属性



这是我的代码。

class Repository(context: Context) {
// Can access 'context' from here
val mSharedPrefsProperties = context
.getSharedPreferences(context.packageName.plus(".properties"), Context.MODE_PRIVATE)
// Can't access 'context' in this function (unresolved reference: context)
private fun getApiKey(): String {
val apiKeys = context.resources.getStringArray(R.array.api_keys)
val random = Random().nextInt(apiKeys.size)
return apiKeys[random]
}
}

有没有一种方法可以从函数内部的构造函数访问属性,或者我需要将它们作为实例/局部变量?

只需将var(或val(放在参数上

class Repository(var context: Context) {
// Can access 'context' from here
val mSharedPrefsProperties = context
.getSharedPreferences(context.packageName.plus(".properties"), Context.MODE_PRIVATE)
// Can't access 'context' in this function (unresolved reference: context)
private fun getApiKey(): String {
val apiKeys = context.resources.getStringArray(R.array.api_keys)
val random = Random().nextInt(apiKeys.size)
return apiKeys[random]
}
}

简单的构造函数参数不会成为类的属性。这只能通过明确地使它们成为varval来实现。然而,您可以在任何与初始化相关的内容中访问这些简单的参数,例如:

class ConstWithArg(param1: String) {
init {
println(param1)
}
val field1 = param1.length
var field2 = param1.length
}

如果在构造后需要访问该参数,则应将其设为val,使其成为属性。如果你不想让其他人在你的课堂之外访问这个字段,请将其标记为私有字段:

class ConstWithArg(private val param1: String) {
fun useProp(){
println(param1)
}
}

相关内容

  • 没有找到相关文章

最新更新