【问题标题】:clarification of "this" keyword in JavaJava中“this”关键字的说明
【发布时间】:2011-07-06 15:06:39
【问题描述】:

我从 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”类吗?通常如何找到“this”所指的内容?

【问题讨论】:

标签: java this


【解决方案1】:

它指的是ExampleActivity 的实例,在该实例上调用了onCreate()

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

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

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

【讨论】:

    【解决方案2】:

    this 指的是最内部的类实例。在您的示例中,它指的是ExampleActivity,它的类型为OnClickListener,它被传递给setOnClickListener

    【讨论】:

      【解决方案3】:

      在实例方法或 构造函数,this 是对 当前对象 — 其对象 方法或构造函数被调用。 您可以参考任何成员 实例中的当前对象 使用this的方法或构造函数。

      参考资料(来自 Sun Java 教程):

      【讨论】:

        【解决方案4】:

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

        在你的例子中,它指的是 ExampleActivity 类的一个实例。

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2014-04-10
            • 1970-01-01
            • 1970-01-01
            • 2011-05-20
            • 2014-12-03
            • 1970-01-01
            • 2012-12-15
            • 1970-01-01
            • 2020-03-25
            相关资源
            最近更新 更多