Это то, что известно как анонимный внутренний класс .Документация по Swing для Java Standard Edition охватывает это здесь , и я полагаю, что он используется для почти той же цели в разработке Android.Это позволяет вам проще подключать различные интерфейсы обработчиков событий к компонентам, которые запускают эти события.Например, если действие, выполняемое в этом OnClickListener, больше нигде не нужно, вы теперь ограничиваете его единственным классом, в котором оно используется.Вам не нужен другой файл классов в вашем исходном дереве, и немного более очевидно, что происходит в этом конкретном компоненте пользовательского интерфейса.
За кулисами компилятор создает класс с автоматически сгенерированным именем,который действительно реализует OnClickListener
.Иногда вы можете увидеть это в трассировке стека с классом com.foo.Class$1
.Это $1
- это то, что компилятор генерирует для вашего класса.