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
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
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.
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.
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.
Vous pouvez utiliser quelque chose basé sur <#FreeMarker>.
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".