Я пришел с Java и следую онлайн-уроку об использовании библиотеки Volley
для выполнения веб-запросов в Android.
Инструктор создал переменную запроса следующим образом:
val registerRequest = object : StringRequest(Method.POST, URL_REGISTER, Response.Listener {
println(it) // will print the response
complete(true)
}, Response.ErrorListener {
Log.d("ERROR", "Could not register user: $it")
complete(false)
}) {
override fun getBodyContentType(): String {
return "application/json; charset=utf-8"
}
override fun getBody(): ByteArray {
return requestBody.toByteArray()
}
}
Я понимаю, что он создает переменную registerRequest
типа StringRequest
.Но я не понимаю, почему он префикс StringRequest
с object :
здесь.
Также я понимаю, что конструктор StringRequest
принимает Int, String, Lambda, Lambda
.После этого меня смущает то, что разработчик смог объявить некоторые override
методы после закрытия конструктора.Почему они это сделали?Из того, что я могу сказать, это похоже на создание подкласса StringRequest с последующей записью там методов переопределения?Я прав?
Исходя из Java, этот способ написания кода довольно необычен для меня.