1. 序章

このチュートリアルでは、このJavaキーワードを見ていきます。

Javaでは、 thisキーワードは、メソッドが呼び出されている現在のオブジェクトへの参照です

キーワードをいつどのように使用できるかを調べてみましょう。

2. フィールドシャドウイングの明確化

このキーワードは、インスタンス変数をローカルパラメーターから明確にするのに役立ちます。 最も一般的な理由は、インスタンスフィールドと同じ名前のコンストラクターパラメーターがある場合です。

public class KeywordTest {

    private String name;
    private int age;
    
    public KeywordTest(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

ここでわかるように、thisnameおよびageインスタンスフィールドを使用して、パラメーターと区別しています。

もう1つの使用法は、ローカルスコープでパラメーターを非表示またはシャドウイングするthisを使用することです。 使用例は、変数とメソッドの非表示の記事にあります。

3. 同じクラスのコンストラクターの参照

コンストラクターから、this()を使用して、同じクラスの別のコンストラクターを呼び出すことができます。 ここでは、コンストラクターチェーンに this()を使用して、コードの使用量を減らしています。

最も一般的な使用例は、パラメーター化されたコンストラクターからデフォルトのコンストラクターを呼び出すことです。

public KeywordTest(String name, int age) {
    this();
    
    // the rest of the code
}

または、引数なしのコンストラクターからパラメーター化されたコンストラクターを呼び出して、いくつかの引数を渡すことができます。

public KeywordTest() {
    this("John", 27);
}

this()はコンストラクターの最初のステートメントである必要があることに注意してください。そうしないと、コンパイルエラーが発生します。

4. thisをパラメーターとして渡す

ここにprintInstance()メソッドがあり、thisKeyword引数が定義されています。

public KeywordTest() {
    printInstance(this);
}

public void printInstance(KeywordTest thisKeyword) {
    System.out.println(thisKeyword);
}

コンストラクター内で、 printInstance()メソッドを呼び出します。 this を使用して、現在のインスタンスへの参照を渡します。

5. thisを返す

このキーワードを使用して、メソッドから現在のクラスインスタンスを返すこともできます。

コードを複製しないために、ビルダーデザインパターンでコードがどのように実装されているかを示す完全な実例を次に示します。

6. 内部クラス内のthisキーワード

また、 this を使用して、内部クラス内から外部クラスインスタンスにアクセスします。

public class KeywordTest {

    private String name;

    class ThisInnerClass {

        boolean isInnerClass = true;

        public ThisInnerClass() {
            KeywordTest thisKeyword = KeywordTest.this;
            String outerString = KeywordTest.this.name;
        }
    }
}

ここで、コンストラクター内で、 KeyboardTest.this callを使用してKeywordTestインスタンスへの参照を取得できます。さらに深く進んでインスタンス変数にアクセスできます。 KeyboardTest.this.nameフィールドのように。

7. 結論

この記事では、Javaのthisキーワードについて説明しました。

いつものように、完全なコードはGithubから入手できます。