Под «анонимным классом», я полагаю, вы имеете в виду анонимный внутренний класс .
Анонимный внутренний класс может пригодиться при создании экземпляра объекта с определенным " extras ", например методы перегрузки, без фактического подкласса класса.
Я использую его как ярлык для присоединения слушателя событий:
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// do something
}
});
Используя этот метод, кодирование немного быстрее, так как мне не нужно создавать дополнительный класс, который реализует ActionListener
- я могу просто создать анонимный внутренний класс, не создавая отдельный класс.
Я использую это техника для «быстрых и грязных» задач, когда создание целого класса кажется ненужным. Наличие нескольких анонимных внутренних классов, которые выполняют точно то же самое, должны быть реорганизованы в фактический класс, будь то внутренний класс или отдельный класс.
Дэн Борнштейн сделал презентацию о Dalvik на Google I / O . Стоит посмотреть, чтобы узнать о системе в целом, включая ограничения, которые вас волнуют. Конкретная проблема языков, отличных от Java, скомпилированных в байт-код Java, поднимается во время вопросов и ответов.
Ремко ван'т Вир имеет проект на github , где он исправил Clojure для работы на Android. Тим Ридделл написал руководство о том, как его использовать .
Как упоминалось здесь @sean, иногда есть более серьезная проблема, чем просто производительность. Дэн Борнштейн обсуждает это, когда его спрашивают о Jython на ~ 54: 00 в видео. В настоящее время нет поддержки динамических языков, которые генерируют байт-код на лету (поскольку перевод байт-кода недоступен во время выполнения).
Есть несколько патчей, чтобы Clojure работала.
http://riddell.us/tutorial/clojure_android/ clojure_android.html
Я думаю, что реальная проблема заключается в использовании генераторов байтового кода некоторыми динамическими языками; они не будут генерировать байтовый код для виртуальной машины Davlik. Следовательно, eval работать не будет.
Учитывая относительно ограниченное аппаратное обеспечение работающего телефона, вам, вероятно, следует просто настроить таргетинг на java и не беспокоиться о динамическом языке jvm. Насколько я понимаю, динамические языки на jvm не будут такими же эффективными, как java.
Кроме того, Android SDK довольно разумный и простой в написании, потому что я не думаю, что вы ощутите много преимуществ, используя что-то еще.