在哪里使用"这个"在java?

时间:2015-05-27 17:41:38

标签: java this getter-setter

据我所知,这用于以下情况:

    当我们想要引用与本地变量同名的实例变量时,使用
  1. this关键字。
  2. 将一个构造函数调用到同一个类中的其他构造函数。
  3. 将类实例作为参数传递给方法。
  4. 访问外部类变量。
  5. 但是我已经完成了我的项目代码,他们在getter中使用它:

    class a {
        int time;
    
        int getValue() {
            return this.time * 5.;
        }
    }
    

    据我所知,每个对象都有自己的实例变量和方法副本,因此以这种方式返回是有意义的。 请澄清。

    提到Stackoverfow问题:When should I use "this" in a class?

4 个答案:

答案 0 :(得分:9)

许多人(我就是其中之一)使用this个关键字,即使这些关键字并非显而易见。

  • 有些人发现将this放在属于同一类的任何内容之前会更清楚,同样的逻辑适用于super
  • 有些人总是使用this反射来更好地自动完成(自动弹出窗口,懒惰的程序员)在某些IDE中。

这些要点主要基于意见,并不重要。

对于其他用途,正如您所提到的,它可用于将参数传递给另一个构造函数,传递类实例,或者当您有两个具有相同名称的变量时传递给distinct。

然而,IMO,只是没有多个具有相同名称的变量,这简直太简单了。

答案 1 :(得分:6)

如果你有类似下面的方法:

public void setFoo(Foo foo) {
    this.foo = foo;
}

必须使用this。否则,它会将参数foo赋值给自己,而不是将其赋值给实例变量。

但这并不意味着可能使用this的唯一情况。以下代码严格等同:

public void setFoo(Foo newFoo) {
    this.foo = newFoo;
}

虽然在那种情况下,你可能会写得很好

public void setFoo(Foo newFoo) {
    foo = newFoo;
}

因为this不再是必要了。这并不能使非法

所以,

int getValue() {
    return time * 5;
}

int getValue() {
    return this.time * 5;
} 

严格等同。

答案 2 :(得分:1)

关键字' this'用于指代当前使用的Reference对象。这只是用作语法糖,以便更容易地执行某些任务,例如在同一个类中调用构造函数,访问同一类中的字段,参数类型......

以下是两种不同编程风格的示例。两者都做同样的事情,但第一个例子使用'这个'显式再次调用构造函数。

    public class Foo {
    public Foo() { this("Hello"); } //Explicit constructor call
    public Foo(String string) { System.out.print(string); }
    }

    public class Bar {
    public Bar() { new Bar("Hello"); }
    public Bar(String string) { System.out.print(string); }
    }

答案 3 :(得分:1)

关键字' this'通常在匿名类中使用,以引用包含类中的字段。例如:

public class App 
{
    public String myString = "This is Java";
    public App()
    {
        JButton button = new JButton("Test");
        button.addActionListener(new ActionListener(){

        @Override
        public void actionPerformed(ActionEvent arg0)
        {
            System.out.println(App.this.myString); // <-- App.this gives access to public fields in App
        }});
    }
}