1. Введение

В этом руководстве мы рассмотрим ключевое слово this Java.

В Java это ключевое слово является ссылкой на текущий объект, метод которого вызывается.

Давайте рассмотрим, как и когда мы можем использовать ключевое слово.

2. Устранение неоднозначности затенения полей

Ключевое слово полезно для устранения неоднозначности переменных экземпляра из локальных параметров. Наиболее распространенная причина — когда у нас есть параметры конструктора с тем же именем, что и поля экземпляра:

Как мы видим здесь, мы используем this с полями экземпляра name и age — чтобы отличить их от параметров .

public class KeywordTest {

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

Другое использование — использовать это с параметром, скрывающим или затеняющим в локальной области. Пример использования можно найти в статье Скрытие переменных и методов.

3. Ссылки на конструкторы одного и того же класса

Из конструктора мы можем использовать this() для вызова другого конструктора того же класса. Здесь мы используем this() для цепочки конструкторов, чтобы уменьшить использование кода.

Наиболее распространенный вариант использования — вызов конструктора по умолчанию из конструктора с параметрами:

Или мы можем вызвать конструктор с параметрами из конструктора без аргументов и передать некоторые аргументы:

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

Примечание. , что this() должен быть первым оператором в конструкторе, иначе произойдет ошибка компиляции.

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

4. Передача this в качестве параметра

Здесь у нас есть метод printInstance(), в котором определен аргумент ключевого слова this:

Внутри конструктора мы вызываем метод printInstance(). При этом мы передаем ссылку на текущий экземпляр.

public KeywordTest() {
    printInstance(this);
}

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

5. Возврат этого

Мы также можем использовать это ключевое слово для возврата текущего экземпляра класса из метода.

Чтобы не дублировать код, вот полный практический пример того, как он реализован в шаблоне проектирования Builder.

6. Ключевое слово this во внутреннем классе

Мы также используем это для доступа к экземпляру внешнего класса из внутреннего класса:

Здесь, внутри конструктора, мы можем получить ссылку на Экземпляр KeywordTest с вызовом KeywordTest.this. Мы можем пойти еще дальше и получить доступ к переменным экземпляра, таким как поле KeywordTest.this.name.

public class KeywordTest {

    private String name;

    class ThisInnerClass {

        boolean isInnerClass = true;

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

7. Заключение

В этой статье мы исследовали ключевое слово this в Java.

Как обычно, полный код доступен на Github.

«