澄清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’指的是封闭类的实例。