clarification of “this” keyword in Java

笑着哭i 提交于 2019-12-01 18:51:59

问题


I have this code copied from Android developers website:

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
    }
    ...
}

I am wondering what exactly "this" keyword refers to? Does it refer to the class "ExampleActivity"? And in general how to find what "this" refers to?


回答1:


It refers to the instance of ExampleActivity on which onCreate() has been called.

In general, from the Java Language Specification, 15.8.3:

The keyword this may be used only in the body of an instance method, instance initializer or constructor, or in the initializer of an instance variable of a class. If it appears anywhere else, a compile-time error occurs.

When used as a primary expression, the keyword this denotes a value that is a reference to the object for which the instance method was invoked (§15.12), or to the object being constructed. The type of this is the class C within which the keyword this occurs. At run time, the class of the actual object referred to may be the class C or any subclass of C.




回答2:


this refers to the most inner class instance. In your example it refers to ExampleActivity which is of type OnClickListener which is passed in to setOnClickListener.




回答3:


Within an instance method or a constructor, this is a reference to the current object — the object whose method or constructor is being called. You can refer to any member of the current object from within an instance method or a constructor by using this.

Reference (from the Sun Java Tutorial):

  • Using the this keyword
  • Understanding Instance and Class Members



回答4:


"this" is a reference to the current object.

In your case, it refers to an instance of the ExampleActivity class.

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




回答5:


Yes, 'this' refers to the instance of the enclosing class.



来源:https://stackoverflow.com/questions/6598649/clarification-of-this-keyword-in-java

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!