Java 为什么使用';这';有必要吗?
“this”用于访问正在使用的当前对象。与传递对象本身相比,它有什么优势,因为该方法无论如何都要访问正在传递的当前对象。Java 为什么使用';这';有必要吗?,java,methods,parameter-passing,this,Java,Methods,Parameter Passing,This,“this”用于访问正在使用的当前对象。与传递对象本身相比,它有什么优势,因为该方法无论如何都要访问正在传递的当前对象。这很少是真正必要的-如果我没记错的话,仅当您有一个与局部变量同名的字段,并且希望明确指定要访问该字段而不是局部变量时。在许多情况下都会有所帮助。最明显的是在构造函数中,当参数名称与实例变量相同时: public final class Foo { private final int bar; public Foo(final int bar) {
这很少是真正必要的-如果我没记错的话,仅当您有一个与局部变量同名的字段,并且希望明确指定要访问该字段而不是局部变量时。在许多情况下都会有所帮助。最明显的是在构造函数中,当参数名称与实例变量相同时:
public final class Foo
{
private final int bar;
public Foo(final int bar)
{
this.bar = bar; // MUST specify "this" here
}
}
这个
关键字可能有很多用法。在java中,这是一个引用当前对象的引用变量。
此
关键字的用法
这里给出了这个
关键字的6种用法
此关键字可用于引用当前类实例变量
此()可用于调用当前类构造函数
此关键字可用于调用当前类方法(隐式)
这可以在方法调用中作为参数传递
这可以在构造函数调用中作为参数传递
此关键字还可用于返回当前类实例
阅读有关Keywork的更多信息此
用于访问当前类变量
或方法
。用于区分实例变量(ivars
)和局部变量
它比传递对象本身有什么好处
方法将访问正在传递的当前对象
无论如何
根据您关于使用this
关键字优于传递对象本身的问题,this
在Java中是final
变量,而传递时的对象可能是也可能不是final
。作为final
变量,我可以清楚地看到使用this
优于传递对象本身的两个主要优点
this=newfoo()//编译错误;无法为最终变量赋值:此
synchronized(this){
/*此同步块将锁定在当前实例上*/
}
this
还有许多优点,您可以从其他答案中看出
Shishir如果我没听错你的话,你想做什么
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所做的
当您查看构造函数时,您会注意到无法将当前类对象传递给它,因为在调用构造函数之前对象不存在。因此,您无法访问构造函数中的当前类对象。请添加描述源代码的任何具体问题情况。这用于访问当前类变量或方法。用于区分实例变量和局部变量。如果此答案基于类似的文章,则应包含有关此问题的信息。