1. Введение
В этом руководстве мы рассмотрим ключевое слово this
Java.
В Java это
ключевое слово является ссылкой на текущий объект, метод которого вызывается .
Давайте рассмотрим, как и когда мы можем использовать ключевое слово.
2. Устранение неоднозначности затенения полей
Ключевое слово полезно для устранения неоднозначности переменных экземпляра из локальных параметров . Наиболее распространенная причина — когда у нас есть параметры конструктора с тем же именем, что и поля экземпляра:
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
}
Или мы можем вызвать параметризованный конструктор из конструктора без аргументов и передать некоторые аргументы:
public KeywordTest() {
this("John", 27);
}
Обратите внимание, что this()
должен быть первым оператором в конструкторе, иначе произойдет ошибка компиляции.
4. Передача этого
как параметра
Здесь у нас есть метод printInstance()
, в котором определен аргумент this Keyword :
public KeywordTest() {
printInstance(this);
}
public void printInstance(KeywordTest thisKeyword) {
System.out.println(thisKeyword);
}
Внутри конструктора мы вызываем метод printInstance()
. С помощью this
мы передаем ссылку на текущий экземпляр.
5. Возврат этого
Мы также можем использовать это
ключевое слово для возврата текущего экземпляра класса из метода.
Чтобы не дублировать код, вот полный практический пример того, как он реализован в шаблоне проектирования Builder .
6. Ключевое слово this
во внутреннем классе
Мы также используем это
для доступа к экземпляру внешнего класса из внутреннего класса:
public class KeywordTest {
private String name;
class ThisInnerClass {
boolean isInnerClass = true;
public ThisInnerClass() {
KeywordTest thisKeyword = KeywordTest.this;
String outerString = KeywordTest.this.name;
}
}
}
Здесь внутри конструктора мы можем получить ссылку на экземпляр KeywordTest
с помощью вызова KeywordTest.this
.
Мы можем пойти еще дальше и получить доступ к переменным экземпляра, таким как поле KeywordTest.this.name
.
7. Заключение
В этой статье мы рассмотрели ключевое слово this
в Java.
Как обычно, полный код доступен на Github .