| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Для чего нужен this |
| Автор: bogomol 23.3.2007, 12:28 |
| И что это вообще такое? |
| Автор: jManiak 23.3.2007, 12:46 |
| this - это ссылка на самого себя. Т.е. Если мы используем this в методе какого-то объекта, то это будет ссылка на этот самый объект. Используется например при создании JOptionPane, когда нужно получить ссылку на объект который будет родителем для него. |
| Автор: y3u 23.3.2007, 12:49 |
| cамое частое использование - это для передачи параметров, которые имеют точно такое же название как и поля класа, в этом случае мы пишем this.myParam = myParam; |
| Автор: LSD 23.3.2007, 13:22 | ||||||
| Методы в Java бывают статические, и не статические. Основное различие между ними состоит в том, что в не статические методы всегда неявно передается ссылка на объект у которого этот метод был вызыван. Так вот this - это способ эту ссылку получить. Эта ссылка всегда гарантированно не равно null. Например есть у нас такой код:
при обращении к str мы неявно обращаемся к this.str. Иногда, как писал y3u, это обращение требуется сделать явно:
Есть еще одно использование ссылки this, при работе с внутренними не статическим классами. Дело в том, что внутренний не статический класс содержит ссылку на экземпляр родительского класса, вот например:
|
| Автор: nornad 23.3.2007, 15:31 | ||
| Добавлю от себя. Ключевое слово this ещё используется, если в одном конструкторе требуется вызвать другой конструктор этого же класса.
|
| Автор: Jubei 23.3.2007, 15:55 | ||||
Хитро |
| Автор: LSD 23.3.2007, 16:22 | ||
Вот пример из класса Date
|
| Автор: Jubei 23.3.2007, 16:40 |
| Понятно, спасибо за пример ! |
| Автор: olegrolik 23.3.2007, 17:28 |
| Что в данном примере делает "this"? display=Display.getDisplay(this); Пример из J2ME. Извиняюсь за оффтоп. |
| Автор: Maksym 23.3.2007, 17:58 |
| olegrolik Передает в метод ссылку на объект, в контексте которого вызван метод. |
| Автор: nornad 23.3.2007, 18:11 |
| Конкретнее узнать, что представляет this в твоём примере можно, если посмотреть, в методе какого класса находится приведённая строка. |
| Автор: olegrolik 23.3.2007, 22:34 | ||
nornad
Примерно так Также про класс Display написано: There is exactly one instance of Display per MIDlet and the application can get a reference to that instance by calling the getDisplay() method. The application may call the getDisplay() method at any time during course of its execution. The Display object returned by all calls to getDisplay() will remain the same during this time. |
| Автор: nornad 24.3.2007, 00:35 |
В данном примере this даёт ссылку на экзепляр MIDlet, для которого необходимо получить экземпляр Display. Display.getDisplay(MIDlet midlet) - статический метод для получения Display. Из-за его статичности и требуется передача ссылки на объект, от которого надо получить Display. Вроде бы всё сказал. |
| Автор: hamsterKSU 24.3.2007, 01:46 |
| что могу сказать по этому поводу - книги надо читать с начала и до середины, а потом в произвольном порядке |