私のタイトルに要約されているように、インスタンス化時に定義された定数を含む式がコンパイル時に単純化されるかどうか疑問に思っていましたか?
たとえば、ヒープのコンストラクターで値が設定されている最終的なブール値 isMinHeap を持つヒープ クラスがあります。ヒープのメソッドは、特定の場所でこのブール値を使用します。コンパイラはこれを最適化して、このブール値を含むこれらすべての式を単純化できますか、またはメソッドが呼び出されるたびに式が完全に計算されますか?
ありがとう!
編集:誰かがより具体的な例を求めたので、ノードがヒープから削除されるたびに呼び出されるメソッドを次に示します(ツリーの再ヒープ化を支援するため):
private boolean requiresRepositioningDown(BTNode<T> node)
{
boolean childIsSmaller = (node.getLeft().getValue().compareTo(
node.getValue()) < 0)
|| (node.getRight() != null && node.getRight().getValue().compareTo(
node.getValue()) < 0);
if (isMinHeap && childIsSmaller || !isMinHeap && !childIsSmaller)
return true;
else
return false;
}
ここで isMinHeap を使用した式は、毎回完全に評価されるように見えますが、ヒープがインスタンス化時に最大ヒープにされた場合、式の右側全体が無視される可能性があります (無視する必要があります)。