据我所知,这用于以下情况:
this
关键字。但是我已经完成了我的项目代码,他们在getter中使用它:
class a {
int time;
int getValue() {
return this.time * 5.;
}
}
据我所知,每个对象都有自己的实例变量和方法副本,因此以这种方式返回是有意义的。 请澄清。
提到Stackoverfow问题:When should I use "this" in a class?
答案 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
}});
}
}