ホームページ >Java >&#&チュートリアル >Java でのインスタンス変数の初期化: 宣言とコンストラクター - どちらが優れていますか?

Java でのインスタンス変数の初期化: 宣言とコンストラクター - どちらが優れていますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-05 18:40:14768ブラウズ

Instance Variable Initialization in Java: Declaration vs. Constructor – Which is Better?

インスタンス変数の初期化: 宣言とコンストラクター

Java でインスタンス変数を初期化する場合、一般的な 2 つのアプローチがあります。

  1. インスタンス変数宣言時の初期化

    class A {
        B b = new B();
    }
  2. コンストラクターでのインスタンス変数の初期化

    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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。