web-dev-qa-db-fra.com

Comment fournir des directives de préprocesseur dans Java

Comment puis-je fournir correctement les fonctionnalités suivantes à partir de C # en 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
24
Robert H

Java n'a pas de préprocesseur - donc la réponse simple est que vous ne pouvez pas.

Ce genre de chose est normalement géré dans Java utilisant l'injection de dépendance - qui est à la fois plus puissant et plus flexible.

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

18
Tim B

Java n'a pas de préprocesseur, mais cela ne signifie pas que vous ne pouvez pas exécuter le code Java via cpp - bien qu'il ne soit pris en charge par aucun outil, AFAIK.

9
Ingo

Utilisez l'injection de dépendance/l'inversion du contrôle. Selon vos besoins réels, vous pourrez peut-être vous en sortir avec quelque chose d'aussi simple que le fichier de propriétés/les variables d'environnement pour contrôler les choses.

Vous pourriez être en mesure d'utiliser des définitions statiques autour de certains types d'initialisation/code.

1
Dave Newton

Découvrez Manifold's Java préprocesseur. Il se branche directement dans le compilateur, il est donc très simple à utiliser - pas d'étapes de construction ou de génération de code intermédiaire, etc.

Manifold's Java Preprocessor

0
Scott

Vous pouvez utiliser quelque chose basé sur <#FreeMarker>.

enter image description here

source: https://github.com/mkowsiak/jpp

Cependant, cette solution nécessitera une étape de pré-compilation, si vous souhaitez modifier le code. D'un autre côté, vous pouvez toujours créer du code qui fonctionne sans étapes de prétraitement - sorte de compilation "par défaut".

0
Oo.oO