Есть много хороших ответов, но есть еще одна очень небольшая причина, чтобы поместить this
всюду. Если вы попытались открыть исходные коды из обычного текстового редактора (например, блокнот и т. Д.), Использование this
сделает его более понятным для чтения.
Представьте это:
public class Hello {
private String foo;
// Some 10k lines of codes
private String getStringFromSomewhere() {
// ....
}
// More codes
public class World {
private String bar;
// Another 10k lines of codes
public void doSomething() {
// More codes
foo = "FOO";
// More codes
String s = getStringFromSomewhere();
// More codes
bar = s;
}
}
}
Это очень понятно для чтения с любой современной IDE, но это будет полный кошмар для чтения с помощью обычного текстового редактора.
Вам будет трудно узнать, где находится foo
, пока вы не используйте функцию «Найти» редактора. Тогда вы будете кричать на getStringFromSomewhere()
по той же причине. Наконец, после того, как вы забыли, что s
есть, bar = s
даст вам последний удар.
Сравните это с этим:
public void doSomething() {
// More codes
Hello.this.foo = "FOO";
// More codes
String s = Hello.this.getStringFromSomewhere();
// More codes
this.bar = s;
}
foo
- переменная, объявленная во внешнем классе Hello
. getStringFromSomewhere()
- это метод, объявленный также в внешнем классе. bar
принадлежит классу World
, а s
- локальная переменная, объявленная в этом методе. Конечно, всякий раз, когда вы что-то создаете, вы создаете правила. Поэтому при разработке вашего API или проекта, если ваши правила включают «если кто-то открывает все эти исходники с помощью блокнота, он или она должен стрелять в себя в голову», тогда вы совершенно не хотите делать это .