Поддержка предварительной обработки Java в Intellij IDEA - PullRequest
2 голосов
/ 29 декабря 2010

Кто-нибудь знает о поддержке предварительной обработки Java в Intellij IDEA? Возможно есть какие-то сторонние плагины?

Только для примера: вот фрагмент кода Java, написанный для Netbeans (который поддерживает предварительную обработку):

//#if JSR82
//# import javax.bluetooth.*;
//#endif

Встроенный препроцессор Netbeans анализирует эти // # ключи и комментарии или раскомментирует части кода в зависимости от определенных ключей препроцессора.

Я бы ожидал чего-то похожего в Intellij IDEA.

Спасибо заранее

Ответы [ 3 ]

6 голосов
/ 29 декабря 2010

(это слишком долго для комментария, поэтому ответ, который на самом деле является не ответом, а скорее комментарием).

Я много работал с препроцессорами Java и IntelliJ IDEA. Я не знаю ни одного плагина / надстройки, позволяющего работать с препроцессорами (но это было бы замечательно ).

Кроме того, неизменно, когда речь заходит о Java и препроцессорах, люди будут указывать, что "такой вещи не существует" .

И все же, конечно, некоторые из них существуют. Например, вот отличная статья Nokia (вы, возможно, слышали об этой компании, которая выпускает несколько мобильных телефонов Java) под названием: «Портирование Java ME с использованием директив препроцессора» .

Правда в том, что Java никогда не дала обещание WORA, особенно в мире J (2) ME.

http://wiki.forum.nokia.com/index.php/Java_ME_Porting_using_preprocessor_directives

Еще одна очень веская причина для использования пользовательских (к сожалению, пользовательских) препроцессоров и генераторов кода можно увидеть в таких вещах, как (превосходный) исходный код Trove API: в основном это ваш единственный способ избежать повторения одного и того же кода для всех примитивов Java и т. д.

Я также слышал о людях, желающих генерировать разные версии «одного и того же» .jar , не помещая весь код в различные созданные .jars. Конечно, это можно сделать «дружественным к Java» способом , используя удивительные обходные пути ... Но некоторая предварительная обработка в этом случае тоже спасает день.

Дело в том, что являются допустимым регистром для препроцессоров Java. Мне нравится Nokia, потому что с этим трудно спорить;)

3 голосов
/ 29 декабря 2010

Может потребоваться настроить различные артефакты для различных версий библиотеки, а затем реструктурировать код, чтобы изолировать код конкретной версии в подклассах / компонентах, которые включены только в соответствующий артефакт. Это может быть непрактично, особенно в существующем проекте, но меньше проблем, чем написание плагина. Maven имеет аналогичные функции с помощью классификаторов.

0 голосов
/ 29 декабря 2010

Java-программисты обычно не используют препроцессоры, как C / C ++. Были разработаны другие методы и системы, такие как аннотации, генерация кода и т. Д. Возможно, если вы сообщите нам, какую проблему вы пытаетесь решить, кто-то узнает о java-дружественном способе помочь.

Редактировать: я думаю, что консенсус заключается в том, что вы собираетесь написать плагин IntelliJ

...