在我搜索Java中的#ifdef-equivalent时,我找到了一个很好的线程来描述一种进行条件编译的方法:#ifdef #ifndef in Java
我不明白这是如何运作的:
答案 0 :(得分:3)
1)第一个将由编译器优化。也就是说,您将布尔属性设置为'true',编译器将丢弃条件的else分支。如果将其设置为false,则将丢弃then-branch。如果要快速切换到慢速,则必须重新编译代码,反之亦然。
2)启动应用时,您必须定义系统属性。设置VM范围的属性是一种优先操作。我不是专家,但我怀疑你可以在Android应用程序的onCreate事件中设置这些。 System.getProperty背后的核心思想是,通过传递额外的命令行参数(如-Dfast = true),您可以在启动虚拟机时切换应用程序模式。
答案 1 :(得分:1)
第二个更灵活,因为你可以决定在开始时打开或关闭某些东西。第一个示例将被优化掉,因此您需要重新编译才能更改该值。
Systemproperty由-Dproperty = value设置(注意:在传递给main方法的命令行参数之前)