/
Вопросы и ответы
/
Java
/

Как использовать this как параметр java

Как использовать this как параметр java

4 года назад

Человек-Молекула

Ответы

0

Ключевое слово this - это ссылка на текущий объект: объект, метод или конструктор которого вызывается (спецификация Oracle).

Поэтому, передавая this как параметр, мы фактически передаем ссылку на текущий объект. Рассмотрим на примере:

//Создадим простой класс ThisExample
public class ThisExample {
  
    private String message = "null";

//добавим конструктор с аргументом
    public ThisExample(String message) {
        this.message = message;
    }

}

Ключевое слово this в данном случае использовали, чтобы присвоить переменной класса переданный аргумент в конструктор, т.к. их названия одинаковые.

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

public class ThisExample {
  
    public ThisExample() {
        System.out.println("Конструктор без аргументов");

    }

    public ThisExample(String message) {
        this();
        System.out.println("Конструктор с сообщением: " + message);

    }

}

Если мы создадим конструктор класса с аргументом, то сначала будет вызван конструктор без аргумента:

public static void main(String[] args) {
        new ThisExample("this");

    }

Вывод будет следующим:

> Конструктор без аргументов > Конструктор с сообщением: test

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

private String message = "null";

    public ThisExample() {
        this("Test message");

    }

    public ThisExample(String message) {
        this.message = message;
    }

Можно передать this в качестве аргумента в метод:

static class ThisExample {
        private String message = "null";

        public ThisExample() {
            printMessage(this);
        }

        public ThisExample(String message) {
            this.message = message;
            printMessage(this);
        }

        //метод, в который передаем this в качестве аргумента        
        public void printMessage(ThisExample msg) {
            System.out.println(msg);
        }

        //переопределим метод toString, для наглядности
        @Override
        public String toString() {
        return "message='" + message + '\'';
        }
    }

Запустим наш код:

public static void main(String[] args) {
        new ThisExample();
        new ThisExample("this");

    }

Вывод будет следующим:

> message='null' > message='this'

3 года назад

Игорь Черкасов