public class Foo() {
public Foo() {
this.otherMethod();
otherMethod();
}
public void otherMethod() {
System.out.println("called");
}
}
------
Main:
Foo foo = new Foo();
对otherMethod
的两次调用均按预期工作,因此我想知道是否存在特殊情况,您必须使用其中一个。
很难回答这个问题"我什么时候使用this
",但在这种情况下,最合乎逻辑的选择是什么?为什么?
答案 0 :(得分:3)
在你给出的例子中,它没有任何区别。使用this
以便编译器可以在不同类的成员具有相同名称且在范围内时区分它们。例如,
public class Foo() {
private int bar;
public Foo(int bar) {
this.bar = bar;
}
}
如果你在我的例子中省略了this
而只是写了bar = bar
,那么该语句中出现的bar
都会引用参数变量,因为它优先于{ {1}}在这种情况下。
答案 1 :(得分:1)
绝对没有区别。始终在对象上调用非静态方法。如果未指定,则编译器会在this
上调用它。指定this
完全是多余的。
答案 2 :(得分:0)
在您的示例中,方法调用(this
和out this
)都是相同的。它们都属于使用构造函数实例化自身的对象。
通常,您始终使用对象实例来调用非静态方法。如果没有对象实例,则它们隐含属于拥有调用方法的对象(您可以使用this
,或者不使用this
)