@Rarity7

В чем разница между созданиями TextWatcher в Андроид на Kotlin?

В чем разница между двумя способами создания TextWatcher
1-й способ
val textChangedListener = object: TextWatcher{

        override fun afterTextChanged(p0: Editable?) {
        }

        override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
        }

        override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
            
        }

    }


2-й способ
private object textChangedListener: TextWatcher{

        override fun afterTextChanged(p0: Editable?) {
        }

        override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
        }

        override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {

        }

    }

И 1-й и 2-й способами я могу создать TextChangedListener, но не могу понять какой правильный и в чем разница.

И кстати, во 2-м способе я не могу вызывать функции внешнего класса.
  • Вопрос задан
  • 392 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Правильный первый. Слово object имеет различные значения. В первом случае ты создаёшь объект анонимного класса, который реализует листенер. Во втором случае ты создаёшь синглтон textChangedListener типа textChangedListener(т.е. имена класса и его единственного инстанса совпадают. Кстати, поэтому обжекты-синглтоны обычно именуется с большой буквы.). Во втором случае, естественно, нельзя вызывать другие методы, т.к. обжект не является внутренним(inner) классом. Таким образом, он бесполезен чуть более, чем полностью.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы