getA()和this.getA()之间有什么区别?
问题描述:
假设有一个像下面这样的类。getA()和this.getA()之间有什么区别?
public Class SomeClass {
private A getA() {
...
}
public void show() {
A a = getA(); // CASE #1
...
}
public void show2() {
A a = this.getA(); // CASE #2
...
}
他们的结果是一样的,是不是?我的白痴同事坚持说对了!!(这意味着他们是不同的)
答
当提及从内实例的类的外实例的字段
它们在这种情况下是相同的。我主张不要使用this
,因为它暗含了它,它只是让代码在那里混乱,但它是否存在并没有实际的区别。
虽然这不是没用的。所述this
关键字有时需要,例如:当一个局部变量/参数隐藏它用来区分它们
- (使用外。本)
- 当使用明确的泛型类型调用一个方法,而不是仅仅infered类型(你不能只是做
<String, String>stringMethod()
,它必须是this.<String, String>stringMethod()
。
这决不是一个详尽的列表,只是作为一个例子来演示,虽然在这种情况下它没有什么区别,但它可以在其他情况下做到!
答
你的同事毕竟不是那么多白痴,因为他们都是都是一样的。在第一种情况下,Java含蓄暗示this
。
答
我会举出我在学校时间遇到的这个指针的最好例子。
class ThisChk
{
int param1;
public int check(int param1)
{
this.param1 = param1; //this.param1 is the class variable param1, param1 is the function parameter with a local scope
return 0;
}
}
答
这里有一个情况,你可能想用'this'来说明一下。
class Outer {
A a;
public A getA() {
return a;
}
class InnerSuper {
A a;
public A getA() {
return a;
}
}
class Inner extends InnerSuper {
public void test() {
A a = Outer.this.getA();
A a = this.getA();
}
}
}
是的,它们是一样的。 – Rekin 2011-01-28 01:37:10