Страницы

Поиск по вопросам

понедельник, 30 декабря 2019 г.

Слово this в аргументе конструктора

#java


Встретил такой код 

public EWrapperImpl() {
    readerSignal = new EJavaSignal();
    clientSocket = new EClientSocket(this, readerSignal);
}


При создании экземпляра clientSocket передаем в конструктор this.

Что это? Экземпляр обьета? Какого обьекта ... EWrapperImpl? Или EClientSocket?
    


Ответы

Ответ 1



Ключевое слово this всегда является ссылкой на экземпляр класса в котором оно используется. В вашем случае это EWrapperImpl Надо заметить, что это правило действует и для вложенных классов. Например: public class Outher { public Outher() { //в этом месте this - это ссылка на класс Outher } class Inner { public Inner() { //в этом месте this - это ссылка на класс Inner //а чтобы во внутреннем классе получить ссылку на внешний класс //надо делать так ИмяВнешнегоКласса.this, т.е так: //Outher.this } } }

Ответ 2



this – это ссылка на текущий объект – объект, чей метод или конструктор вызывается. Насколько я понимаю, Ваша полная конструкция выглядит так: public class EWrapperImpl implements EWrapper { private EReaderSignal readerSignal; private EClientSocket clientSocket; protected int currentOrderId = -1; public EWrapperImpl() { readerSignal = new EJavaSignal(); clientSocket = new EClientSocket(this, readerSignal); } } Здесь this – это ссылка на экземпляр класса EWrapperImpl.

Комментариев нет:

Отправить комментарий