私は、このJavaコードに出くわした:Java構文でStatic {}とは何を意味していますか?
static {
String aux = "value";
try {
// some code here
} catch (Exception e) { }
String UUID_prefix = aux + ":";
}
私は、Javaに新しいです、ここで何が起こっているかを説明してください。
私は、このJavaコードに出くわした:Java構文でStatic {}とは何を意味していますか?
static {
String aux = "value";
try {
// some code here
} catch (Exception e) { }
String UUID_prefix = aux + ":";
}
私は、Javaに新しいです、ここで何が起こっているかを説明してください。
これは、あなたのクラスは、これは静的な初期化ブロックと呼ばれ、このクラスがロードされたときに、一度に実行されるクラスローダ
によってロードされたときに呼び出されますコードのブロックです。
これはスタティックイニシャライザブロックです。あなたはどのメソッドの外でもクラスのボディでそれを見つけたに違いありません。スタティックなinitブロックは、クラスロード時にクラスごとに1回だけ実行されます。
これはstatic initializerです。
これは静的初期化ブロックです。それをコンストラクタの静的なバージョンと考えてください。コンストラクターはクラスのインスタンス化時に実行されます。静的初期化ブロックは、クラスがロードされると実行されます。
あなたは(明らかにコードを作製した)このような何かのためにそれらを使用することができます。
private static int myInt;
static {
MyResource myResource = new MyResource();
myInt = myResource.getIntegerValue();
myResource.close();
}
はOracle's tutorial on initializing fieldsの「静的初期化ブロック」を参照してください。
ありがとうジョナサン。 –
Sufyanは、
静的初期化子が継承されていないとクラスがロードされ、JREによって初期化されるときに一度だけ実行されます。つまり、このクラスから作成したオブジェクトの数に関係なく、この静的ブロックは1回だけ初期化されます。
私はそれの大ファンではなく、状況に応じてより良い選択肢があると確信しています。
おかげで、 レッズ
この構文は、Java 7のよう時代遅れされてきた今と同等です:
public static void main(String[] args) {
/*
stuff
*/
}
おかげジョシ。実際には、私はこのコードをC++に翻訳したいと思います。どうすればいいのか説明できますか? –
@sufyansiddique:あなたは新しい質問を思いつくべきです。 –
クラスがロードされたときに実行されるC++には何がありますか?単にコードブロックを置くだけです。 –