![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Anton Vatchenko |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Уже давно работаю с джавой, но всегда оставалась проблема сборки нескольких версий (на разные мобильные устройства - но суть темы не в этом). Раньше пользовался сишным препроцессором, который не давал возможность нормально работать в Эклипсе. Затем смотрел в сторону Антенны, но там реализованы только условия - мне очень необходимо заменять некоторые функции, скажем в коде DRAW(x, y), а в зависимости от указанного заголовочного файла (как было в препроцессоре си), этот код заменяется. Так вот в антенне этого нет.
Появилась мысль создать классы с финальными методами и членами, и в зависимости от версий их подставлять. Код становится удобным для работы в Эклипсе. Помещать эти классы решил в особый пакет типа com.porting.*, и после компиляции просто не включать в дистрибутив - ведь все обращения в приложении к тем финальным полям заменяются на их значения, и файл как бы не нужен. Вот только после компиляции код:
превращается (это декомпилированный вариант):
И возникает вопрос - а кому тут нужен import com.porting.Lang, если он нигде не используется? Это такая фича джавы? Нет ли возможных флагов, чтобы данную гадость убрать? |
||||
|
|||||
| ivanovpv |
|
|||
![]() Варвар ![]() ![]() Профиль Группа: Участник Сообщений: 639 Регистрация: 26.1.2005 Где: Москва Репутация: 4 Всего: 28 |
Я пользуюсь Нетбинсом, там есть встроенный препроцессор - не то чтобы ох-ах, но работает. Для тех же мобильных устройств без проблем работаю с 5-6 устройствами в одном коде. -------------------- Aut viam inveniam aut faciam |
|||
|
||||
| Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Если не ошибаюсь, там нельзя засунуть в препроцессор процедуры, а также заставить использовать определенные переменные в коде. Примеры:
1. Есть функция, которую хочется использовать во многих местах, к примеру рисование спрайта. Не писать же везде ifdef NOKIA и т.п. Намного легче написать DRAW_SPRITE(x, y), и в зависимости от текущих заголовочных файлов будет подставлен метод конкретной модели устройства. 2. Языковые данные. Нельзя написать System.out.println(LANG_HELLO), чтобы затем быстро собирать русские и английские версии. Ведь языковые файлы-бинарники - это самое неоптимальное что есть. Да и не все на нетбинсах сидят... Это сообщение отредактировал(а) Anton Vatchenko - 2.11.2009, 20:15 |
|||
|
||||
| math64 |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Попробуй использовать интерфейсы:
Это сообщение отредактировал(а) math64 - 3.11.2009, 10:49 |
||||||
|
|||||||
| ivanovpv |
|
||||
![]() Варвар ![]() ![]() Профиль Группа: Участник Сообщений: 639 Регистрация: 26.1.2005 Где: Москва Репутация: 4 Всего: 28 |
Я пишу примерно так:
То есть если сборка поддерживает bluetooth - то появляется специфическая опция меню. Не говорю, что это фонтан, но как грится вполне съедобно А в таких штуках я пользуюсь файлами пропертис отдельными для каждого языка и небольшой оберткой, которая позволяет подгружать нужный ресурс в зависимости от текущей локали. Эт точно -------------------- Aut viam inveniam aut faciam |
||||
|
|||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |