'this'用于访问当前正在使用的对象。由于该方法将访问正在传递的当前对象,因此它具有优于传递对象本身的优点。为什么使用'this'关键字是必要的?
回答
它有超过传递对象本身,因为 方法去访问被当前对象有什么优势通过 反正。
按你的问题上的优势用this
关键字在传递对象本身的是this
是而当传递可能会或可能不会final
对象在Java中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
this
很少真正需要 - 如果我记得是对的,只有当你有一个与本地变量同名的字段,并且你想明确指定你想要访问该字段而不是局部变量时。
它可以在很多情况下帮助。其中最明显的是在构造函数,当参数名称相同的实例变量:
public final class Foo
{
private final int bar;
public Foo(final int bar)
{
this.bar = bar; // MUST specify "this" here
}
}
可以有很多this
关键字的使用。在java中,这是一个引用当前对象的引用变量。 this
的使用关键字
以下是关于this
关键字的6种用法。
- 此关键字可用于引用当前类实例变量。
- this()可用于调用当前的类构造函数。
- 此关键字可用于调用当前类方法(隐式地)
- 这可以作为方法调用中的参数传递。
- 这可以在构造函数调用中作为参数传递。
- 这个关键字也可以用来返回当前类的实例。
了解更多关于this Keywork
this
用于访问当前类variable
或methods
。用于区分实例变量(ivars
)和局部变量。
如果我理解正确的话,你想要做
static void f(MyClass self) {
// access current class object using self
}
,而不是
void f() {
// access current class object using this
}
并调用该方法这样的
MyClass.f(instance);
istead这
instance.f();
尽管这实际上是可能的,但如果需要访问它,则必须始终将当前对象作为参数传递。为什么不把对象隐式地传递给非静态方法?这是java所做的。
当您查看构造函数时,您会注意到无法将当前类对象传递给它,因为在构造函数被调用之前对象不存在。所以你不能访问构造函数中的当前类对象。
- 1. $ this关键字的含义是什么?
- 2. 为什么上下文是使用“this”关键字在JavaScript
- 3. 什么是在java中使用“this”关键字
- 4. d3js - 如何使用`this`关键字或替代项是什么?
- 5. 什么是const关键字必需
- 6. 为什么不能在这里使用'this'关键字?
- 7. 为什么不在这里使用“this”关键字?
- 8. 为什么模板可以直接使用$ this关键字?
- 9. javascript的'this'关键字与java的'this'关键字有什么不同?
- 10. “this”关键字在Java的“.addActionListener(this)”中引用了什么?
- 11. java中“This”关键字的用法是什么?
- 12. 是否正确使用“this”关键字?
- 13. 什么是synchronized关键字的使用?
- 14. System.IO.StreamWriter:为什么我必须使用关键字“using”
- 15. 为什么需要virtual关键字?
- 16. 是否有必要使用Throwables.propagate(e)使用throw关键字?
- 17. 什么是`this`关键字的Scala类型编程类比?
- 18. 使用关键字“this”有什么好处?
- 19. 什么时候你会在PHP中使用$ this关键字?
- 20. “this”的用法关键字
- 21. 为什么使用void关键字?
- 22. 为什么使用params关键字
- 23. 为什么不使用new关键字
- 24. 我们是否必须在打字稿中使用“this”关键字?
- 25. 为什么在这段代码中的setAdapter方法中使用了“this”关键字?它是指什么?
- 26. 为什么不能在.Net的静态方法中使用关键字'this'?
- 27. 函数调用和关键字'this'之间的关系是什么?
- 28. “this”这个关键字是什么意思?
- 29. 使用“this”关键字的对象
- 30. 使用“this”关键字的功能
请添加描述源代码的具体问题情况。 – Smutje
这是用来访问当前类变量或方法。用于区分实例变量和局部变量。 –