2013-12-12 5 views
19

Как я могу правильно предоставить следующие функции на C# в Java?Как обеспечить директивы препроцессора в Java

[C#]

#define PRODUCTION //Change from sandbox to production to switch between both systems. 

#if SANDBOX 
    using NetSuite.com.netsuite.sandbox.webservices; 
#endif 

#if PRODUCTION 
    using NetSuite.com.netsuite.webservices; 
#endif 
+1

Похоже, я не могу добавить ответ, так как вопрос был закрыт *, но * Я читал об инструменте под названием [Prebop] (http://boldinventions.com/index.php?option=com_content&view=article&id = 81: javapreprocessorusingeclipse) (Отказ от ответственности: я еще не использовал его), что может сделать это, и, по-видимому, оно поддерживает Eclipse. (Я согласен с другими, хотя: в вашей ситуации используйте DI. - Просто поместите это здесь для других гуглеров.) – BrainSlugs83

ответ

16

Java не имеет препроцессор - так простой ответ в том, что вы не можете.

Такие вещи, как правило, обрабатываются на Java, используя Injection Dependency Injection - который является более мощным и гибким.

http://www.vogella.com/articles/DependencyInjection/article.html

+3

Следует отметить, что в данном примере OP он также должен использовать DI/IoC в C# - это в основном плохой пример. Я думаю, что вопрос все еще действителен, и этот ответ, хотя и действителен для сценария OP, выглядит довольно неутешительно - (не ваша ошибка @TimB, хотя ответ ниже об использовании cpp является своего рода интересно ...) – BrainSlugs83

1

Использование Dependency Injection/инверсия управления. В зависимости от ваших реальных потребностей вы можете уйти с чем-то простым, как переменные файла свойств/среды, чтобы управлять вещами.

Возможно, вы используете статические определения около , некоторые типы инициализации/кода.

+0

Используя пример в сообщении, как DI/IoC поможет? Из того, что я прочитал (хотя и ненадолго), кажется, что DI используется в основном для развязки, а не для условной компиляции. Мой конкретный прецедент окружает изменения инструкций импорта в массе, чтобы подключиться к изолированной программной системе. Есть ли специальный учебник/набор документов, которые я должен прочитать? –

+0

DI/IoC является «условной компиляцией» во время выполнения. Не зная, что вы на самом деле пытаетесь поменять местами, я предполагаю, но вы бы использовали одну из двух реализаций webservice, например, в разработке, все они были бы заглушены, чтобы вернуть известные значения. Например, это часто делается для целей тестирования. Скорее всего, мы будем использовать разные параметры подключения/конечные точки в разработке, которые обычно являются просто значениями конфигурации, которые не требуют DI. –

+0

Решение состоит в том, чтобы использовать одно и то же пространство имен для обеих версий, помещая каждую версию в свой собственный архив JAR и просто загружая соответствующий. – MauganRa

8

В Java нет препроцессора, но это не значит, что вы не можете запускать Java-код через cpp - хотя он не будет поддерживаться никакими инструментами, AFAIK.

+1

Похоже, я не могу добавить ответ, так как вопрос был закрыт *, но * Я читал об инструменте под названием [Prebop] (http://boldinventions.com/index.php?option=com_content&view=article&id=81 : javapreprocessorusingeclipse) (Отказ от ответственности: я еще не использовал его), что может сделать это, и, по-видимому, оно поддерживает Eclipse. (Я согласен с другими, хотя: в ситуации OP он должен использовать DI. - Просто поместив это здесь для других гуглеров.) – BrainSlugs83

Смежные вопросы