this
Ключевое слово используется в основном в трех ситуациях. Первый и наиболее распространенный - в методах установки для устранения неоднозначности ссылок на переменные. Второе - это когда необходимо передать текущий экземпляр класса в качестве аргумента методу другого объекта. Третий способ вызова альтернативных конструкторов из конструктора.
Случай 1: использование this
для устранения неоднозначности ссылок на переменные. В методах установки Java мы обычно передаем аргумент с тем же именем, что и закрытая переменная-член, которую мы пытаемся установить. Затем назначьте аргумент x
к this.x
. Это дает понять, что вы присваиваете значение параметра «имя» переменной экземпляра «имя».
public class Foo
{
private String name;
public void setName(String name) {
this.name = name;
}
}
Случай 2: Использование this
в качестве аргумента, передаваемого другому объекту.
public class Foo
{
public String useBarMethod() {
Bar theBar = new Bar();
return theBar.barMethod(this);
}
public String getName() {
return "Foo";
}
}
public class Bar
{
public void barMethod(Foo obj) {
obj.getName();
}
}
Случай 3: Использование this
для вызова альтернативных конструкторов. В комментариях тринитис правильно указал на другое распространенное использование this
. Если у вас есть несколько конструкторов для одного класса, вы можете использовать this(arg0, arg1, ...)
для вызова другой конструктор по вашему выбору, если вы делаете это в первой строке вашего конструктора.
class Foo
{
public Foo() {
this("Some default value for bar");
//optional other lines
}
public Foo(String bar) {
// Do something with bar
}
}
Я также видел, как this
использовал, чтобы подчеркнуть тот факт, что ссылка на переменную экземпляра (без необходимости в устранении неоднозначности), но это редкий случай, на мой взгляд.