gpt4 book ai didi

java - 我什么时候应该在类里面使用 "this"?

转载 作者:行者123 更新时间:2023-12-01 18:15:43 26 4
gpt4 key购买 nike

我知道 this 指的是当前对象。但我不知道什么时候我真正需要使用它。例如,如果我在某些方法中使用 x 而不是 this.x 会有什么区别吗? x 可能会引用所考虑方法的本地变量吗?我的意思是仅在该方法中可见的变量。

this.method()怎么样?我可以使用它吗?我应该使用它吗?如果我只使用 method(),默认情况下它不会应用于当前对象吗?

最佳答案

this 关键字主要在三种情况下使用。第一个也是最常见的是在 setter 方法中消除变量引用的歧义。第二种是需要将当前类实例作为参数传递给另一个对象的方法时。第三种是从构造函数内调用备用构造函数的方法。

情况 1:使用 this 消除变量引用的歧义。在 Java setter 方法中,我们通常传入一个与我们尝试设置的私有(private)成员变量同名的参数。然后我们将参数 x 分配给 this.x。这清楚地表明您正在将参数“name”的值分配给实例变量“name”。

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 调用备用构造函数。评论里,trinithis正确指出了 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 用于强调实例变量正在被引用这一事实(无需消除歧义),但在我看来,这种情况很少见。

关于java - 我什么时候应该在类里面使用 "this"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60373606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com