インスタンス変数の初期化: 宣言とコンストラクター
Java でインスタンス変数を初期化する場合、一般的な 2 つのアプローチがあります。
インスタンス変数宣言時の初期化
class A { B b = new B(); }
コンストラクターでのインスタンス変数の初期化
class A { B b; A() { b = new B(); } }
どちらにも利点はありますかアプローチ?
Java コンパイラは両方のアプローチを同じように扱いますが、次の点を考慮する必要があります。
初期化順序:
どちらのアプローチもインスタンス変数を初期化します。で宣言されている順序code.
可読性:
一般に、最初のアプローチ (宣言時の初期化) の方が読みやすいと考えられています。
例外処理:
2 番目の方法 (コンストラクターでの初期化) では、例外処理が可能です。初期化で例外がスローされた場合、オブジェクトの作成は失敗します。
初期化ブロック:
上記のアプローチに加えて、初期化ブロックもあります。コンパイラによるコンストラクター。
{ a = new A(); }
ベスト実践:
一般に、例外処理または遅延初期化が特に必要でない限り、宣言時にインスタンス変数を初期化することをお勧めします。依存関係を扱うときは、new 演算子を直接使用することを避け、代わりに依存関係の注入を選択することをお勧めします。
例:
コストの高い ExpensiveObject がある場合初期化するには、遅延初期化を使用してパフォーマンスを向上させることができます:
ExpensiveObject o; public ExpensiveObject getExpensiveObject() { if (o == null) { o = new ExpensiveObject(); } return o; }
以上がJava でのインスタンス変数の初期化: 宣言とコンストラクター - どちらが優れていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。