我见过将关键字this
作为输入参数传递的代码。
例如:
getContainer(this);
关键字this
的含义是什么?我听说它引用了类本身的一个实例(或类似的东西),但是它是如何工作的?
答案 0 :(得分:2)
From 15.8.3 of the java specification:
关键字this只能在实例方法的主体中使用, 实例初始化器或构造函数,或者在初始化器中 类的实例变量。如果它出现在其他任何地方,a 发生编译时错误。当用作主要表达时, keyword这表示一个值,该值是对象的引用 调用实例方法(第15.12节),或者是对象 建造。这个类型是关键字所在的C类 这发生了。在运行时,引用的实际对象的类 可以是C类或C的任何子类。
[...]
关键字this也用于特殊的显式构造函数 调用语句,它可以出现在一个开头 构造函数体(§8.8.7)。
所以是的,一个类可以使用this关键字来引用它自己。当方法中的局部变量与类成员变量同名时,也需要this
关键字,以区分它们。
答案 1 :(得分:1)
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() {
}
}
答案 2 :(得分:1)
Java中的关键字this
是引用当前对象的引用变量。
它可用于引用当前类实例变量
它可用于调用或启动当前类构造函数
它可以作为方法调用中的参数传递
它可以在构造函数调用中作为参数传递
它可用于返回当前的类实例
this
是对当前对象的引用,其方法正在被调用。
您可以使用this
关键字来避免实例/对象的方法/构造函数中的命名冲突。
答案 3 :(得分:0)
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
}
}
通过这种方式,您可以分离两个类的职责,同时保持它们的耦合。
答案 4 :(得分:-1)
在java中,我们有类并创建这些类的实例(对象)。因此,当对象需要指向或引用自身时,则使用 this 关键字。