"этот" Java-запрос - PullRequest
       11

"этот" Java-запрос

1 голос
/ 22 марта 2011

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

Мне интересно, что именно означает "это" в Java / Android.Иногда вы видите это как неотъемлемую часть некоторых методов, но мне любопытно, к чему это относится в деталях.Спасибо!

Ответы [ 4 ]

5 голосов
/ 22 марта 2011

На мой взгляд это :

  • одно из пятидесяти ключевых слов Java
  • специальная (например, только для чтения) ссылка на текущий объект

Вы можете использовать его в четырех различных контекстах:

  1. для указания на поля текущего объекта и методы (this.)
  2. для указания на текущий объект (например, Object object = this;)
  3. для вызова конструктора в другом конструкторе (this ())
  4. (квалифицировано this) для указания на внешний объект во внутреннем (не статическом) классе (например, OuterClassName.this.OuterClassField)

Чтобы получить лучшее понимание, вам нужен пример:

class Box {
   // Implementing Box(double width = 1, double length = 1, double height = 1):
   Box(double width, double length, double height) {         
      this.width = width; // width is local parameter
      this.length = length; // this.length is object's field
      this.height = height;
   }
   Box(double width, double length) {
      // no statements here allowed
      this(width, length, 1);
      // you can call at most one constructor (recursion not allowed)
   }
   Box(double width) {
      this(width, 1, 1);
   }
   Box() {
      this(1, 1, 1);
      System.out.println("I am default constructor");
   }
   public double getWidth() {
       return this.width; // explicit way (width means the same)
       // return Box.this.width; // full-explicit way
   }
   public void showWidth() {
       System.out.println(this.getWidth());
   }
   public void showWidthAlternate() {
       Box box = this; // the same as explicitly Box box = Box.this;
       // this = box; // can't touch me (read-only reference)
       System.out.println(box.width);
   }
   private double width, length, height;
}

Дополнительная информация:

4 голосов
/ 22 марта 2011

this используется для ссылки на текущий экземпляр класса.Смотри http://www.javabeat.net/qna/16-what-is-super-and-this-keyword-in-java/

1 голос
/ 22 марта 2011

это относится к текущему объекту

, используемому в основном, когда поле затенено

, например:

class Example {

int x;

public void setSomething(int x) {
 this.x = x;
}

}

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

Я отредактировал, чтобы добавить ссылку, если вы хотите прочитать больше:

это ключевое слово

0 голосов
/ 22 марта 2011

Это относится к экземпляру класса, для которого был вызван метод.

Например, если у вас есть:

Cow buddy;
...
buddy.moo();

Если метод "moo ()" использует "это «внутри своего определения, оно будет относиться к корове,« приятель ».

...