我见过将关键字this
作为输入参数传递的代码。
例如:
getContainer(this);
关键字this
是什么意思?我听说它指的是类本身的一个实例(或类似的东西),但它是如何工作的?
我见过将关键字this
作为输入参数传递的代码。
例如:
getContainer(this);
关键字this
是什么意思?我听说它指的是类本身的一个实例(或类似的东西),但它是如何工作的?
关键字 this 只能用在实例方法、实例初始化器或构造器的主体中,或者在类的实例变量的初始化器中。如果它出现在其他任何地方,则会发生编译时错误。当用作主要表达式时,关键字 this 表示一个值,该值是对调用实例方法的对象(第 15.12 节)或正在构造的对象的引用。this 的类型是关键字 this 出现的类 C。在运行时,引用的实际对象的类可能是 C 类或 C 的任何子类。
[...]
关键字 this 也用于特殊的显式构造函数调用语句,它可以出现在构造函数体的开头(第 8.8.7 节)。
所以是的,一个类可以使用 this 关键字来引用它自己。this
当方法中的局部变量与类成员变量同名时,也需要该关键字,以区分它们。
this
指当前实例调用了哪个方法,
因此它将引用传递给调用该成员方法的当前实例
class MyRunnable implements Runnable {
Thread t;
public MyRunnable() {
this.t = new Thread(this); //here it passes reference to current instance of `Runnable`
}
public void run() {
}
}
this
也可以通过传递调用类的实例给被调用类。例如
public class Caller{
public void callerClassMethod1(){
new Called(this).
}
public void callerClassMethod2(){
}
}
class Called{
private Caller caller;
public Called(Caller caller){
this.caller=caller;
}
public void calledClassMethod1(){
//.... Do something before
caller.callerClassMethod2();
//..... Do something after
}
}
这样,您可以分离 2 个类的职责,同时保持它们耦合。
在java中,我们有类并创建这些类的实例(对象)。因此,当对象需要指向或引用自身时,就会使用this关键字。