На этот вопрос уже есть ответ здесь:
Мне интересно, есть ли в Java эквивалент для
#if 0
... Some Code ...
#endif
C, который можно использовать вокруг блоков кода, которые мы не хотим компилировать. Добавление блочных кавычек:
/*
... Some Code ...
*/
также имеет тот же эффект, но проблема в том, что мы должны убедиться в отсутствии однострочных комментариев
// some comment
в блоке.
Есть несколько решений:
Использовать препроцессор - я думаю, что он будет работать со стандартным CPP. Существовали некоторые специфические для Java пропроцессоры, такие как jappo и java + , которые можно попробовать
Заменить #if 0 на true, если:
if ( false) {code}
Условие может быть уточнено путем запроса системных свойств:
if(System.getProperty("NO_COMPILE").equals("true")) {
code
}
Это имеет то преимущество, что его можно легко установить либо из ANT или из Затмения.
РЕДАКТИРОВАТЬ : Пожалуйста, отметьте, что если код действительно будет скомпилирован и представлен в файлах .class. Более того, хотя запрос к системным свойствам более элегантен, он выполняется во время выполнения, а не во время компиляции, и поэтому не совсем соответствует первоначальному требованию. If (false) на 2-м месте лучше.
EDIT2 : еще лучшее решение, которое я только что нашел: http://prebop.sourceforge.net/
вы можете просто использовать Java Preprocessor, и я думаю, что это будет лучше, чем флаги http://code.google.com/p/java-comment-preprocessor/ флаги, конечно, позволяют вырезать и добавлять блоки на этапе компиляции, но препроцессор позволяет сделать процесс намного более гибким
Вместо того чтобы пытаться сделать код условным с помощью предварительной обработки исходного кода (как это делает C), используйте объектно-ориентированное программирование: используйте шаблоны проектирования, такие как Стратегия, и внедрение зависимостей, чтобы сделать код условным.