澄清Java中的“this”关键字
我从Android开发者网站复制了这段代码:
public class ExampleActivity extends Activity implements OnClickListener { protected void onCreate(Bundle savedValues) { ... Button button = (Button)findViewById(R.id.corky); button.setOnClickListener(this); } // Implement the OnClickListener callback public void onClick(View v) { // do something when the button is clicked } ... }
我想知道“this”关键字到底是指什么? 它是指“ExampleActivity”类吗? 一般来说如何找到“这个”指的是什么?
它指的是调用onCreate()
的ExampleActivity
实例。
通常,从Java语言规范15.8.3开始 :
关键字this只能在实例方法,实例初始化程序或构造函数的主体中使用,或者在类的实例变量的初始化程序中使用。 如果它出现在其他任何地方,则会发生编译时错误。
当用作主表达式时,关键字this表示一个值,该值是对调用实例方法的对象(第15.12节)的引用,或者是对正在构造的对象的引用。 其类型是C类,其中出现关键字。 在运行时,引用的实际对象的类可以是C类或C的任何子类。
this
指的是最内部的类实例。 在您的示例中,它引用ExampleActivity
,它是OnClickListener
类型,它传递给setOnClickListener
。
在实例方法或构造函数中,
this
是对当前对象的引用 – 正在调用其方法或构造函数的对象。 您可以使用this
方法从实例方法或构造函数中引用当前对象的任何成员。
参考(来自Sun Java教程):
- 使用this关键字
- 了解实例和类成员
“this”是对当前对象的引用。
在您的情况下,它引用ExampleActivity类的实例。
http://download.oracle.com/javase/tutorial/java/javaOO/thiskey.html
是的,’this’指的是封闭类的实例。