Как работает System.getProperty («быстрый»)? - PullRequest
2 голосов
/ 27 апреля 2011

В своем поиске # ifdef-эквивалента в Java я обнаружил этот замечательный поток, описывающий способ выполнения условной компиляции: # ifdef #ifndef в Java

Что я не понимаю, так это как работает:

  1. Почему 2-й класс (System.getProperty) лучше, чем 1-й (ложь / правда)?
  2. "быстрый" не относится к Java предопределенные свойства . это вероятно означает, что я должен определить это в моем коде где-то. Что лучшее место, чтобы сделать это в Android приложение? Является ли onCreate () хорошим местом?

Ответы [ 2 ]

3 голосов
/ 27 апреля 2011

1) Первый будет оптимизирован компилятором.То есть вы установите для булевого свойства значение true, а компилятор отменит ветвь else условных выражений.Если вы установите значение false, тогда ветвь будет отброшена.Вы должны перекомпилировать свой код, если хотите быстро переключиться на медленный или наоборот.

2) Вам нужно будет определить системное свойство при запуске приложения.Установка свойств для всей виртуальной машины является преобладающей операцией.Я не эксперт по Android, но я сомневаюсь, что вы можете установить их в onCreate-событии приложения для Android.Основная идея System.getProperty заключается в том, что вы сможете переключать режим приложения при запуске виртуальной машины, передавая дополнительный аргумент командной строки, например -Dfast = true.

1 голос
/ 27 апреля 2011
  1. 2-й более гибкий, так как вы можете решить, включить или выключить что-то во время запуска.Первый пример будет оптимизирован, поэтому вам нужно перекомпилировать, чтобы изменить значение.

  2. Systemproperty устанавливается как -Dproperty = value (Примечание: перед аргументами командной строки, которые передаются восновной метод)

...