Как передать в метод другого класса ссылку на экземпляр текущего класса?

244
11 января 2020, 04:00

Есть Class1

public class Class1 {
private Class2 class2;
public Class2 getClass2() {
    return class2;
}
public void setClass2(Class2 class2) {
    this.class2 = class2;
}
}

Есть Class2 в котором я имею ссылку на Class1. Как при вызове class1.setClass2(); передать в метод именно ссылку на class2?

Я знаю, что можно сделать в Class2 так: Class2 c = new Class2();, и передать в метод с, но, как я понимаю, это будет уже новый экземпляр класса, а не текущий, из которого я делаю вызов? Как передать ссылку на самого себя?

Answer 1

Вам нужно использовать слово this. Слово this - это ссылка на объект, в котором оно применяется. Вы можете сделать так:

//где то в Class2
Class1 cl1 = ...;
cl1.setClass2(this);

Можете почитать пару статей на эту тему, например, эту.

Кстати, если бы у вас Class1 наследовался от Class2(ну мало ли), то вы могли бы присвоить ссылку переменной таким образом:

//где-то в Class1
public void setClass2() {
    class2 = super;
}

Потому что слово super хранит ссылку на объект-родитель.

P.S. Да, тогда это будет уже новый объект:

Я знаю, что можно сделать в Class2 так: Class2 c = new Class2();, и передать в метод с, но, как я понимаю, это будет уже новый экземпляр класса, а не текущий, из которого я делаю вызов?

READ ALSO
Spring gateway mapping к spring rest data

Spring gateway mapping к spring rest data

Создал Gateway сервис и сервис товаров, все конектится через eurekaвот зависимость для gateway

148
Java Reflect private method

Java Reflect private method

в другом классе делаю reflection

145
Ничего не отображается во Frame. Swing

Ничего не отображается во Frame. Swing

Переместите framesetVisible(true); в последнюю строку метода

179