Анонимные объекты используются, когда необходимо создать анонимный объект класса, который не сохраняется в какой-либо переменной. Анонимные объекты наиболее часто используются в качестве обработчиков событий. Например для добавления обработчика события изменения текста в текстовом поле можно использовать такой код (nameField это название переменной, в которой хранится ссылка на текстовое поле id которого равен nameField):
nameField.addTextChangedListener(object: TextWatcher {
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun afterTextChanged(p0: Editable?) {}
})
Также анонимные объекты можно использовать, когда нам нужен объект, но нет необходимости в объявлении нового класса для этого объекта:
var anObject = object {
var a = 10
var b = 20
fun test() {
println("Hello from anonymous object function a = $a, b = $b")
}
}
anObject.test()
println(anObject.a)
Анонимные объекты как типы могут быть использованы только в локальных и закрытых (private) объявлениях, в других случаях объекту присваивается тип Any и члены объекта становятся недоступными.
Реклама