Можно ли присвоить значение null ключевому слову this в Java?

«Можно ли присвоить значение null ключевому слову this в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, это невозможно. Ключевое слово this не является переменной — это контекстная ссылка на текущий объект, значение которой определяется средой выполнения JVM.

Почему нельзя:

  • this — это зарезервированное ключевое слово языка, а не идентификатор переменной.
  • Попытка присвоения вызовет ошибку компиляции.

Пример ошибки:

public class Example {
    public void method() {
        this = null; // Ошибка компиляции:
                     // error: cannot assign a value to final variable 'this'
    }
}

Назначение this:

  1. Разрешение неоднозначности: Обращение к полям и методам текущего объекта, когда их имена перекрываются параметрами.
    public class Point {
        private int x;
        public void setX(int x) {
            this.x = x; // Поле класса = параметр метода
        }
    }
  2. Вызов другого конструктора: Внутри конструктора с помощью this(...).
    public class Point {
        private int x, y;
        public Point() {
            this(0, 0); // Вызов конструктора Point(int, int)
        }
        public Point(int x, int y) {
            this.x = x;
            this.y = y;
        }
    }
  3. Передача текущего объекта в методы других классов.