'this'用于访问正在使用的当前对象。它传递对象本身有什么优势,因为该方法将访问当前正在传递的对象。
答案 0 :(得分:3)
this
关键字可能会被大量使用。在java中,这是一个引用当前对象的引用变量。
使用this
关键字
以下是this
关键字的使用情况。
详细了解this Keywork
答案 1 :(得分:2)
在许多情况下它可以提供帮助。当参数名称与实例变量相同时,最明显的是构造函数:
public final class Foo
{
private final int bar;
public Foo(final int bar)
{
this.bar = bar; // MUST specify "this" here
}
}
答案 2 :(得分:1)
this
很少有必要 - 如果我没记错的话,只有当你有一个与局部变量同名的字段并且你想明确指定你要访问该字段而不是局部变量时
答案 3 :(得分:0)
this
用于访问当前的班级variable
或methods
。用于区分实例变量(ivars
)和局部变量。
答案 4 :(得分:0)
自从传递对象本身以来,它有什么优势呢? 方法将访问正在传递的当前对象 反正。
根据您关于使用this
关键字优于传递对象本身的优势的问题,this
是Java中的final
变量,而传递的对象是可能是也可能不是final
。作为final
变量,我可以清楚地看到使用this
优于传递对象本身的两个主要优点。
无法将任何新值分配给this
的当前实例。
this = new Foo(); //compilation error; cannot assign value to final variable : this
可以在同步块中使用。
synchronized(this){
/*this synchronized block will be locked on current instance*/
}
除了在问题中设置的这个上下文之外,在Java中使用this
有许多优点,你可以从其他答案中找出答案。
Shishir
答案 5 :(得分:0)
如果我理解正确,你想做
static void f(MyClass self) {
// access current class object using self
}
而不是
void f() {
// access current class object using this
}
以这种方式调用方法
MyClass.f(instance);
取而代之的是
instance.f();
虽然这实际上是可行的,但如果需要访问它,则总是必须将当前对象作为参数传递。为什么不将对象隐式传递给非静态方法?这就是java所做的。
当您查看构造函数时,您会注意到无法将当前类对象传递给它,因为在调用构造函数之前该对象不存在。因此,您无法访问构造函数中的当前类对象。