很抱歉,问题标题令人困惑。让我进一步解释。
我正在使用Eclipse构建Java项目。在我的Java产品中,我有条件确定产品中包含的代码,并依赖静态最终常量进行死剥离。
class BuildFlags
{
public static final boolean SOME_FLAG = true; // Need to set this programmatically
}
class SomeOtherClass
{
public void someMethod()
{
if (BuildFlags.SOME_FLAG)
{
// flag specific code
}
}
}
我的问题是如何更改BuildFlags.SOME_FLAG(上图)以便我可以在不更改源的情况下运行特殊构建?有没有什么方法可以将标志传递给jvm(来自eclipse)然后我可以以编程方式设置这个标志?
答案 0 :(得分:3)
您可以通过设置系统属性值(请参阅docs on java)然后从System.getProperty()
获取它来执行此操作。可以通过编辑运行配置在Eclipse中设置系统属性。
请注意,属性设置为字符串 - 您必须将其转换为布尔值。
答案 1 :(得分:0)
java -DsomeFlag=true <class>
和
String flag = System.getProperty("someFlag");