Анонимный класс — это локальный класс без имени, который одновременно объявляется и создается в одном выражении. Чаще всего используется для:
Interface obj = new Interface() {
@Override
public void method() {
// реализация
}
};
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// обработка клика
}
});
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... voids) {
return fetchData();
}
@Override
protected void onPostExecute(String result) {
updateUI(result);
}
}.execute();
recyclerView.setAdapter(new RecyclerView.Adapter() {
// реализация методов адаптера
});
button.setOnClickListener { view ->
// обработка клика
}
viewModel.data.observe(this) { data ->
updateUI(data)
}
val obj = object : SomeInterface {
override fun method() {
// реализация
}
}
Создание кастомного диалога:
AlertDialog.Builder(this)
.setTitle("Title")
.setView(object : View(this) {
// кастомная реализация View
})
.setPositiveButton("OK", object : DialogInterface.OnClickListener {
override fun onClick(dialog: DialogInterface, which: Int) {
// обработка
}
})
.show()
анонимные классы — это мощный инструмент для быстрого создания одноразовых реализаций интерфейсов, который активно использовался в Android-разработке. В современном коде их часто заменяют лямбда-выражениями и SAM-преобразованиями, но для сложных случаев (когда нужно переопределить несколько методов) анонимные классы остаются актуальными.