У меня есть некоторый класс Volley, и когда я инициализирую его из MainActivity, я передаю ему значения context
и expectedHosname
:
VolleySingleton.getInstance(context, expectedHosname).addToRequestQueue(request)
После запуска приложения expectedHostname
можно изменить в соответствии с предпочтениями пользователя, но expectedHostname
всегда устарел внутри класса VolleySingleton
и имеет начальное значение.Похоже, что оно скомпилировано с первым значением и не изменяется, когда я передаю новое через VolleySingleton.getInstance(..., ...)
.
. Как я знаю, свойства в Kotlin могут быть объявлены с ключевым словом var
, и эта переменная имеет неявный getter исеттер.Поэтому я не могу понять, почему expectedHosname
работает как константа.Может быть, я должен изменить свой объект-компаньон ..?
Фрагмент класса
class VolleySingleton constructor(context: Context, private var expectedHostname: String) {
companion object {
@Volatile
private var INSTANCE: VolleySingleton? = null
fun getInstance(context: Context, expectedHostname: String) =
INSTANCE ?: synchronized(this) {
INSTANCE ?: VolleySingleton(context, expectedHostname).also {
INSTANCE = it
}
}
}
private fun sslSocketFactory(context: Context, expectedHost: String): SSLSocketFactory {
// magic with expectedHost var
}
//OR
private val foo: String = expectedHost.toUpperCase()
}