0

我从 Python 来到 Java 并认为这this基本上就像 Python 的self......但是这个小代码让我感到困惑。从功能上讲,这段代码:

public class Test {

    private String name;
    public Test(String givenName)
    {
        this.name = givenName;
    }
    public String nameGet()
    {
        return this.name;
    }
    public static void main(String[] args) 
    {
        Test example = new Test("Hello Guys");
        System.out.println(example.nameGet());

    }

}

与此代码执行相同的操作:

public class Test {

private String name;
public Test(String givenName)
{
    name = givenName;
}
public String nameGet()
{
    return name;
}
public static void main(String[] args) 
{
    Test example = new Test("Hello Guys");
    System.out.println(example.nameGet());

}

}

既然这样,请原谅双关语,似乎是这样,那么在课堂上工作时提到这个有什么意义呢?

4

2 回答 2

3
public Test(String givenName)
{
    this.name = givenName;
}

这个。在这种情况下或 get 方法中不需要)。当代码是这样的时候通常使用它:

public Test(String name)
{
    this.name = name;
}

它告诉编译器将实例变量 ( this.name) 设置为局部变量 ( name)。

有些人这样做很清楚他们正在使用实例变量。

于 2013-10-09T02:45:25.863 回答
2

它通常不需要,但在模棱两可的情况下可能是必要的。假设您的构造函数参数被调用name,那么将无法确定您指的是哪个变量。因此,您将不得不使用:

public class Test {
  private String name;
  public Test(String name) {
    this.name = name;
  }
}

(附带说明;如果您曾经使用过内部类并且您的名称有歧义,请使用 OuterClass.this:

public class Test {
  private String name;
  private class InnerTest {
    InnerTest(String name) {
      Test.this.name = name;
    }
  }
  public Test(String name) {
    new InnerTest(name);
  }
}
于 2013-10-09T02:47:26.430 回答