Heads up: Я пишу часть этого из памяти, поэтому у меня могут быть некоторые из неправильных понятий.
Java имеет возможность писать анонимную функцию. Это полезно, когда у вас есть интерфейс прослушивателя для какого-то события. В качестве примера:
button.setOnClickListener(new View.OnClickListener(View v) {
@Override
public void onClick(View v) {
// handle the action here
}
});
Анонимный слушатель будет скомпилирован как класс, который называется чем-то вроде OnClickListener$1.class
. Это базовое дизайнерское решение языка Java. Все это объект, даже анонимные функции.
Это становится проблемой, когда вы хотите написать более функционально управляемую базу кода. Большое количество анонимных классов создает большой класс, что может быть проблемой на таких ограниченных платформах, как Android.
В функциях Kotlin гораздо более первый класс с точки зрения исходного кода. Мой вопрос заключается в том, что Kotlin более эффективно компилирует эти функции до байтового кода, чем Java, с анонимными классами, или я буду сталкиваться с теми же проблемами, что и большой класс в Java?
Спасибо,