Использование «этого» в Java - PullRequest
7 голосов
/ 05 февраля 2009

Если я напишу следующий класс:

public class Example {

      int j;
      int k;

      public Example(int j, int k) {
           j = j;
           k = k;
      }

      public static void main(String[] args) {
           Example exm = new Example(1,2);
           System.out.println(exm.j);
           System.out.println(exm.k);
      }

}

Программа компилируется, но когда я запускаю ее, метод main выводит два 0. Я знаю, что для того, чтобы сказать, что я хочу инициализировать переменные экземпляра в конструкторе, мне нужно написать:

this.j = j;
this.k = k;

Но если я не пишу это, то какая переменная вычисляется (или учитывается) в конструкторе (слева и со стороны записи выражений)? Это аргумент или переменная экземпляра? Это имеет значение?

Существуют ли другие случаи, когда использование this обязательно?

Ответы [ 13 ]

0 голосов
/ 03 июля 2009

Чтобы избежать этого, используйте IDE (например, Eclipse), и в этом случае он выдаст предупреждения.

Кроме того, сделайте свои поля окончательными, если они абсолютно не могут быть. Есть несколько причин (кроме этой) сделать это.

0 голосов
/ 03 июля 2009

Возможно, вы захотите взглянуть на В чем преимущество наличия явного указателя this/self?
Хотя использование this не является обязательным в Java, как вы заметили, я уверен, что это также поможет пролить свет на вопрос использования this в Java.

0 голосов
/ 06 февраля 2009

Это не совсем отвечает на ваш вопрос, но если вы используете Eclipse, вы можете найти параметр «Назначение не имеет никакого эффекта» полезным. Я уверен, что это будет и в других IDE.

...