言語:java
バージョン:12.0.2
次の文字列ソースコード:
/* @implNote
* The actual value for this field is injected by JVM. The static
* initialization block is used to set the value here to communicate
* that this static final field is not statically foldable, and to
* avoid any possible circular dependency during vm initialization.
*/
static final boolean COMPACT_STRINGS;
static {
COMPACT_STRINGS = true;
}
この文を理解する方法:「静的初期化ブロックは、この静的最終フィールドが静的に折りたたみ可能ではないことを伝えるために、ここで値を設定するために使用され、vm初期化中に起こり得る循環依存を回避します。」
良い質問!これは、開始することができます:en.wikipedia.org/wiki/Constant_folding しかし、私は、「VMの初期化中に循環依存関係」については考えています。
—
Alex 75
@Alex 75私の考えでは、「静的な最終ブールCOMPACT_STRINGS = true」のように記述されている場合。「COMPACT_STRINGS」には決定された値が指定されているため、循環依存が発生する可能性を回避できます。しかし、静的に折りたたみ可能にすることは避けられませんでした。
—
Xiu