将“this”与方法一起使用(在Java中)

2022-09-02 11:47:43

在Java中使用“this”和方法怎么样?它是可选的还是在某些情况下需要强制使用它?

我遇到的唯一情况是在类中调用方法中的方法。但这是可选的。这是一个愚蠢的例子,只是为了说明我的意思:

public class Test {

    String s;

    private String hey() {
        return s;
    }

    public String getS(){
        String sm = this.hey();
        // here I could just write hey(); without this
        return sm;
    }
}

答案 1

您需要它的三种明显情况:

  • 在与构造函数的第一部分相同的类中调用另一个构造函数
  • 区分局部变量和实例变量(无论是在构造函数中还是在任何其他方法中)
  • 将对当前对象的引用传递给另一个方法

以下是所有三个示例:

public class Test
{
    int x;

    public Test(int x)
    {
        this.x = x;
    }

    public Test()
    {
        this(10);
    }

    public void foo()
    {
        Helper.doSomethingWith(this);
    }

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

我相信在你需要的地方使用内部类也有一些奇怪的情况,但应该避免它们非常晦涩难懂,IMO:)super.this.x

编辑:我想不出任何例子,为什么你想要它进行直接的方法调用。this.foo()

编辑:saua在晦涩的内部类示例方面贡献了这一点:

我认为晦涩难懂的情况是:当从具有方法的Inner类中的代码访问外部类时。OuterClass.this.foo()foo()foo()


答案 2

我使用“this”来澄清代码,通常作为我调用实例方法而不是访问类级方法或字段的提示。

但事实并非如此。除非由于范围命名冲突而需要消除歧义,否则您实际上并不需要“this”。