次のコードに遭遇しました:
public final class MainActivity extends ActivityBase
{
static
{
Logger.create();
}
...
}
static
このようなエリアはどういう意味ですか?
この構文を使用する利点は何ですか?
公式ドキュメント
静的初期化ブロックは、中かっこ { } で囲まれ、前に static キーワードが続く通常のコード ブロックです。次に例を示します。
static {
// whatever code is needed for initialization goes here }
クラスは任意の数の静的初期化ブロックを持つことができ、クラス本体のどこにでも表示できます。ランタイム システムは、静的初期化ブロックがソース コードに表示される順序で呼び出されることを保証します。
静的ブロックに代わるものがあります—プライベートを書くことができます
静的メソッド:
class Whatever {
public static varType myVar = initializeClassVariable();
private static varType initializeClassVariable() {
// initialization code goes here
}
}
プライベートな静的メソッドの利点は、クラス変数を再初期化する必要がある場合に後で再利用できることです。
これは静的初期化子です。式だけでなく一連のステートメントを使用して、static
変数 ( も)を初期化できます。static final
この場合、クラスのインスタンスを作成しなくても、クラスが最初に参照されるたびにアクティビティを実行します。