一部の会社のプロジェクトコードでは、次のようなものをよく読んでいます。
boolean foo = Boolean.FALSE;
AFAIKはJavaでローカル変数を初期化するだけでよく(Pascalのようにランダムな値はありません)、特にブール値の場合は初期化が必要になることが多いという事実に加えて、ここで何を見逃しますか?なぜだめですか:
boolean foo = false;
理解できません。また、PMDやFindbugsなどのコード分析ツールもそれをマークしています。しかし、なぜ?
編集:バイトコードがそこにあることを除いて、実際にはあまり知らずに、サンプルクラスを作成して逆コンパイルしました。Boolean.FALSEは次の場所に移動しました:
0: getstatic #15 // Field java/lang/Boolean.FALSE:Ljava/lang/Boolean;
3: invokevirtual #21 // Method java/lang/Boolean.booleanValue:()Z
6: istore_1
'false'バリアントは次のようになりました:
0: iconst_1
1: istore_1
したがって、これについてあまり知らなくても、ステートメントが多いほど実行に時間がかかるため、間違っているだけでなく、長期的には遅くなると思います。