Android неблагоприятен для динамических языков

Под «анонимным классом», я полагаю, вы имеете в виду анонимный внутренний класс .

Анонимный внутренний класс может пригодиться при создании экземпляра объекта с определенным " extras ", например методы перегрузки, без фактического подкласса класса.

Я использую его как ярлык для присоединения слушателя событий:

button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // do something
    }
});

Используя этот метод, кодирование немного быстрее, так как мне не нужно создавать дополнительный класс, который реализует ActionListener - я могу просто создать анонимный внутренний класс, не создавая отдельный класс.

Я использую это техника для «быстрых и грязных» задач, когда создание целого класса кажется ненужным. Наличие нескольких анонимных внутренних классов, которые выполняют точно то же самое, должны быть реорганизованы в фактический класс, будь то внутренний класс или отдельный класс.

30
задан 4 revs, 2 users 100% 22 July 2016 в 21:55
поделиться

4 ответа

Дэн Борнштейн сделал презентацию о Dalvik на Google I / O . Стоит посмотреть, чтобы узнать о системе в целом, включая ограничения, которые вас волнуют. Конкретная проблема языков, отличных от Java, скомпилированных в байт-код Java, поднимается во время вопросов и ответов.

Ремко ван'т Вир имеет проект на github , где он исправил Clojure для работы на Android. Тим Ридделл написал руководство о том, как его использовать .

Как упоминалось здесь @sean, иногда есть более серьезная проблема, чем просто производительность. Дэн Борнштейн обсуждает это, когда его спрашивают о Jython на ~ 54: 00 в видео. В настоящее время нет поддержки динамических языков, которые генерируют байт-код на лету (поскольку перевод байт-кода недоступен во время выполнения).

17
ответ дан 28 November 2019 в 00:24
поделиться

Есть несколько патчей, чтобы Clojure работала.

http://riddell.us/tutorial/clojure_android/ clojure_android.html

Я думаю, что реальная проблема заключается в использовании генераторов байтового кода некоторыми динамическими языками; они не будут генерировать байтовый код для виртуальной машины Davlik. Следовательно, eval работать не будет.

2
ответ дан 28 November 2019 в 00:24
поделиться

Учитывая относительно ограниченное аппаратное обеспечение работающего телефона, вам, вероятно, следует просто настроить таргетинг на java и не беспокоиться о динамическом языке jvm. Насколько я понимаю, динамические языки на jvm не будут такими же эффективными, как java.

Кроме того, Android SDK довольно разумный и простой в написании, потому что я не думаю, что вы ощутите много преимуществ, используя что-то еще.

2
ответ дан 28 November 2019 в 00:24
поделиться

Android только что получил скрипты

3
ответ дан 28 November 2019 в 00:24
поделиться
Другие вопросы по тегам:

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