澄清Java中的“this”关键字

时间:2011-07-06 15:06:39

标签: 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”类吗?一般来说如何找到“这个”指的是什么?

5 个答案:

答案 0 :(得分:4)

它指的是ExampleActivity已被调用onCreate()的实例。

一般来说,来自Java Language Specification, 15.8.3

  

关键字this只能在实例方法,实例初始化程序或构造函数的主体中使用,或者在类的实例变量的初始化程序中使用。如果它出现在其他任何地方,则会发生编译时错误。

     

当用作主表达式时,关键字this表示一个值,该值是对调用实例方法的对象(第15.12节)的引用,或者是对正在构造的对象的引用。其类型是C类,其中出现关键字。在运行时,引用的实际对象的类可以是C类或C的任何子类。

答案 1 :(得分:2)

this指的是最内层的类实例。在您的示例中,它引用ExampleActivity,其类型为OnClickListener,并传递给setOnClickListener

答案 2 :(得分:1)

  

在实例方法或   构造函数,this是对它的引用   当前对象 - 其对象   正在调用方法或构造函数。   你可以参考任何一个成员   实例中的当前对象   方法或构造函数使用this

参考(来自Sun Java教程):

答案 3 :(得分:1)

“this”是对当前对象的引用。

在您的情况下,它引用ExampleActivity类的实例。

http://download.oracle.com/javase/tutorial/java/javaOO/thiskey.html

答案 4 :(得分:0)

是的,'this'指的是封闭类的实例。