假设我有这个类:
Util
{
public static void doSomething()
{
if (FLAG) foo();
else bar();
}
public static void foo() { /* do something */ }
public static void bar() { /* do something else */ }
public static final boolean FLAG = computeFlag();
private static boolean computeFlag() { /* do some computation during init time*/ }
}
FLAG
显然永远不会改变。
假设 Util.doSomething()
被频繁使用(并且在许多关键位置上,性能确实很重要)。
Java 编译器或 JVM 是否足够聪明,可以缓存 doSomething
的代码体,以便代码无需重新评估 FLAG
或执行分支指令。
我应该如何检查这一点?
谢谢
computeFlag
的主体,并且在编译时知道值是已知的,因此FLAG
的值也在编译时已知... :D) - undefined