如何在Java中正确地从C#中提供以下功能?
[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
答案 0 :(得分:18)
Java没有预处理器 - 所以简单的答案就是你不能。
这种事情通常使用依赖注入在Java中处理 - 它更强大,更灵活。
http://www.vogella.com/articles/DependencyInjection/article.html
答案 1 :(得分:9)
Java没有预处理器,但这并不意味着您无法通过cpp
运行Java代码 - 尽管任何工具AFAIK都不支持它。
答案 2 :(得分:1)
使用依赖注入/控制反转。根据您的实际需要,您可以使用像属性文件/环境变量这样简单的东西来控制事物。
您可以在某些类型的初始化/代码周围使用静态定义。
答案 3 :(得分:0)
您可以使用基于<#FreeMarker>的内容。
来源:https://github.com/mkowsiak/jpp
但是,如果要更改代码,此解决方案将需要预编译步骤。另一方面,您仍然可以创建无需预处理即可工作的代码-一种“默认”编译。
答案 4 :(得分:-1)
签出Manifold's Java预处理程序。它直接插入编译器,因此使用起来非常简单-无需构建步骤或中间代码生成等。